Observable Array未正确绑定到复选框

时间:2013-01-27 02:42:08

标签: knockout.js

当我循环并将布尔值绑定到复选框时,复选框不会更新。

    function ViewModel() {
        var self = this;

        self.test = ko.observableArray([ false, false, false ]);

        return self;
    }

ko.applyBindings(new ViewModel());


<div data-bind="text: ko.toJSON(test)"></div>

<div data-bind="foreach: $root.test">
    <input type="checkbox" data-bind="checked: $data" />
</div>

您可以在jsfiddle上查看问题: http://jsfiddle.net/KVWet/1/

1 个答案:

答案 0 :(得分:2)

http://knockoutjs.com/documentation/checked-binding.html

  

如果您的参数解析为数组,则会给予特别考虑。在这种情况下,如果值与数组中的项匹配,则KO将设置要检查的元素,如果数组中未包含项,则取消选中。

因为如果选中某个项目,则会将其值添加到数组中。如果未检查则将其取走。我认为为此工作,您将需要添加到数组的键,以便它可以匹配它所属的复选框。一系列布尔值无法帮助将其映射到相应的复选框。