我遇到了checked
绑定问题:点击复选框不会更新可见状态,尽管依赖关系可见性指示值已更改。knockoutjs检查绑定
下面是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淘汰赛
淘汰赛的其他方面似乎正常工作。当我像this那样在jsffiddle中隔离问题时,它按预期工作。关于接下来我应该测试什么的想法?
基因
更新:2011年12月12日2:54 PST:
@RP尼迈耶:我有很多其他dependentObservable
实例;该metnions selected()
唯一一个看起来是这样的:
this.selectedDocuments = ko.dependentObservable(function() {
return this.documents().findAll(function(doc) {return doc.selected()});
}, this);
findAll
做什么你mighht认为。
据我所知,发生的情况是,当复选框被触发时,selected
observable被设置为true,触发复选框,从而触发dependentObservable,它打印正确的值。但是,视图不会更新。尽管如此,observable认为它被设置为true,因为随后在同一个(取消选择的)复选框上的点击不会产生任何进一步的控制台输出。
UPDATE 2011年12月12日,下午9:45 PST:
我能够重现这一jsfiddle问题。如果您编辑封闭div上的点击处理程序,则复选框将正常工作。有没有解决办法,或者这是一个已知的问题?
我怀疑这实际上是你的问题,但要确保您关闭标签。你的'input'标签没有关闭。这确实会导致KO与其他元素的问题。 –
我尝试使用''和''变种,并产生相同(不正确)的结果。 –
你有任何其他事件处理程序在页面上(实时/委托)或任何其他点击复选框时触发。其他HTML与小提琴类似吗? –