gpt4 book ai didi

knockout.js - knockoutjs 检查绑定(bind)

转载 作者:行者123 更新时间:2023-12-01 12:58:08 25 4
gpt4 key购买 nike

我在使用 checked 绑定(bind)时遇到问题:单击复选框不会更新可见状态,尽管 dependentObservable 指示值已更改。

这是 HTML 片段:

<input type="checkbox" 
data-bind="checked: document().selected"
title="Select one or more documents to find more similar ones" >

这绑定(bind)到我的 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

knockout 的其他方面似乎工作正常。当我像 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,它会打印出正确的值。但是, View 不会更新。尽管如此,observable 认为它已设置为 true,因为随后单击同一个(取消选中的)复选框不会产生任何进一步的控制台输出。

太平洋标准时间 2011 年 12 月 12 日晚上 9:45 更新:

我能够在此 jsfiddle 中重现问题.如果您在封闭的 div 上编辑掉点击处理程序,复选框将正常工作。是否有解决方法,或者这是一个已知问题?

最佳答案

好的 - 有了更新,它就有意义了。您可以做的是 return true; 来自外部 div 上的点击处理程序。这将允许继续执行默认操作。

http://jsfiddle.net/rniemeyer/SbuEV/8/

关于knockout.js - knockoutjs 检查绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8481015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com