1

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

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

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

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

此选项具有正确的行为,但 hasSurname 属性永远不会更改保持为假。

请问有什么帮助吗?

4

2 回答 2

4

如果表达式评估为具有“写入”行为的可观察对象,则与值和检查的绑定仅在小部件更改状态时更新可观察对象。

如果你想使用一个复杂的表达式来读取(hasSurname() && verify())并改变一个简单的值(只有hasSurname),你需要使用“write”回调创建一个计算的 observable - 参见http://knockoutjs。 com/documentation/computedObservables.html - 特别是关于可写计算 observables 的部分。

于 2013-02-14T17:17:22.723 回答
1

尝试在数据绑定中使用 && 时,我的结果好坏参半。如果我需要这样的逻辑,我将它封装在一个计算的 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/

于 2013-02-14T19:53:02.693 回答