Knockout JS - Checkbox数据绑定

时间:2013-02-14 16:51:05

标签: knockout.js

我正在创建一个绑定到属性的复选框,如下所示:

<input type="checkbox" data-bind="checked: hasSurname, enable: verified()"/>

这很好用。我的问题是,我还希望在未验证用户时取消选中该复选框,所以我会执行下一步:

  <input type="checkbox" data-bind="checked: hasSurname && verified(), enable: verified()"/>

此选项具有正确的行为,但hasSurname属性永远不会更改为剩余的错误。

请帮忙吗?

2 个答案:

答案 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以获取示例(我相信这是您正在寻找的行为)。

http://jsfiddle.net/FwUzc/

更新: 我更改了示例,因此它只有2个复选框,并且当验证值更改时,hasSurname值会更新。 http://jsfiddle.net/FwUzc/2/