如何更新所选项目依靠Knockout中的检查事件?

时间:2012-10-13 14:29:48

标签: knockout.js

我有以下视图模型:

var viewModel = {
    List: ko.observableArray([ { Id: 1, Value: "Test 1" }, 
                               { Id: 2, Value: "Test 2" }, 
                               { Id: 3, Value: "Test 3" }
                              ]),
    // item with id "3" checked by default
    Selected: ko.observableArray(["3"])
};

观点:

<div data-bind="text: Selected().length"></div>
<ul data-bind="foreach: List">
    <li class="checkbox">
        <label>
            <input type="checkbox" name="SelectedGroups" data-bind="attr: { value: Id }, checked: $root.Selected()" />
            <span data-bind="text: Value"></span>
        </label>
    </li>
</ul>

我想显示所选项目计数,但是knockout不会在更改复选框状态时附加事件侦听器。我试图使用计算属性,但它不起作用。

虽然,如果我手动(或从脚本)推送或弹出项目到Selected数组一切正常。 我错过了什么?

请参阅fiddle例如。

1 个答案:

答案 0 :(得分:1)

您在已检查的绑定中有一组额外的(),请将其更改为:

data-bind="attr: { value: Id }, checked: $root.Selected"

它应该可以看到这个fiddledocumentation