我遇到了问题checked
绑定:单击复选框不会更新可见状态,尽管 dependentObservable 指示值已更改。
这是 HTML 片段:
<input type="checkbox"
data-bind="checked: document().selected"
title="Select one or more documents to find more similar ones" >
这与我的一个实例绑定Posting
类有一个document()
可观察到的。文档类的相关部分如下所示:
function Document(data, topic) {
this.id = ko.observable(data.id);
this.url = ko.observable(data.url);
this.title = ko.observable(data.title);
/** Display state **/
this.selected = ko.observable(false);
ko.dependentObservable(function() {
console.log("Selected " + this.url() + " : " + this.selected());
}, this);
}
当我单击该复选框时,控制台会打印如下内容:
Selected http://somedomain.com/doc1.pdf : true
但该复选框仍未选中。
我正在使用 jQuery 1.4.2 和淘汰赛 1.2.1
淘汰赛的其他方面似乎工作正常。当我在 jsffiddle 中隔离问题时this http://jsfiddle.net/SbuEV/,它按预期工作。关于我接下来应该测试什么有什么想法吗?
Gene
更新:2011 年 12 月 12 日 2:54(太平洋标准时间):
@RP Niemeyer:我还有很多其他的dependentObservable
实例;唯一提到的selected()
看起来像这样:
this.selectedDocuments = ko.dependentObservable( function() {
return this.documents().findAll(function(doc) {return doc.selected()});
}, this);
findAll
做你可能想的事。
据我所知,正在发生的事情是selected
当触发该复选框时,observable 设置为 true,这会触发 dependentObservable,从而打印正确的值。但是,该视图并未更新。尽管如此,可观察对象认为它设置为 true,因为随后单击同一(取消选择)复选框不会产生任何进一步的控制台输出。
太平洋标准时间 2011 年 12 月 12 日晚上 9:45 更新:
我能够在此重现问题jsfiddle http://jsfiddle.net/SbuEV/7/。如果您编辑了封闭 div 上的单击处理程序,则复选框将正常工作。是否有解决方法,或者这是一个已知问题?