我遇到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和knockout 1.2.1
淘汰赛的其他方面似乎工作正常。当我在像this这样的jsffiddle中隔离问题时,它按预期工作。关于我接下来要测试什么的想法?
基因
更新时间:2011年12月12日2:54太平洋标准时间:
@RP Niemeyer:我有很多其他dependentObservable
个实例;唯一一个metnions selected()
看起来像这样:
this.selectedDocuments = ko.dependentObservable( function() {
return this.documents().findAll(function(doc) {return doc.selected()});
}, this);
findAll
做你想的。
据我所知,正在发生的事情是,当触发复选框时selected
observable设置为true,这会触发dependentObservable,它会输出正确的值。但是,视图未更新。尽管如此,observable认为它设置为true,因为后续点击相同(取消选中)的复选框不会产生任何进一步的控制台输出。
更新2011年12月12日,太平洋标准时间下午9:45:
我能够在此jsfiddle中重现该问题。如果您编辑封闭div上的单击处理程序,则复选框可以正常工作。是否有解决方法,或者这是一个已知的问题?
答案 0 :(得分:4)
好的 - 更新有意义。你可以做的是来自外部div上的点击处理程序的return true;
。这将允许默认操作继续。