我正在创建一个绑定到属性的复选框,如下所示:
<input type="checkbox" data-bind="checked: hasSurname, enable: verified()"/>
这很好用。我的问题是,我还希望在未验证用户时取消选中该复选框,所以我会执行下一步:
<input type="checkbox" data-bind="checked: hasSurname && verified(), enable: verified()"/>
此选项具有正确的行为,但hasSurname属性永远不会更改为剩余的错误。
请帮忙吗?
答案 0 :(得分:4)
如果表达式求值为具有“写入”行为的可观察对象,那么只有当窗口小部件更改状态时,带有值和checked的绑定才会更新observable。
如果您想使用复杂表达式进行阅读( hasSurname()&amp;&amp; Verified())并更改一个简单值(仅 hasSurname ),您将需要使用“write”回调创建一个计算的observable - 请参阅http://knockoutjs.com/documentation/computedObservables.html - 特别是有关可写计算的observable的部分。
答案 1 :(得分:1)
我试图使用&amp;&amp;在数据绑定中。如果我需要这样的逻辑,我将它封装在一个计算的observable中。
this.validate1And2 = ko.computed(function () {
var result;
result = this.hasSurname() && this.verified();
return result;
}, this);
请参阅此jsFiddle以获取示例(我相信这是您正在寻找的行为)。
更新: 我更改了示例,因此它只有2个复选框,并且当验证值更改时,hasSurname值会更新。 http://jsfiddle.net/FwUzc/2/