knockout使用动态创建的复选框列表检查绑定

时间:2015-05-26 09:46:27

标签: knockout.js

我的情景如下: 我有3个按钮,点击我调用函数加载对象数组。 此数组用于为其中的每个对象创建表。 表行包含UserName,UserType和绑定到相应对象的复选框。 绑定如下

data-bind="checkedValue: $data, checked: $root.selectedRecipients"

$ data包含正确的值,这些值作为对象传递给selectedRecipients observableArray。

我的问题是,无论何时按下按钮,都会使用新的复选框重新创建表格,但如果selectedRecipients仍然包含相同的值,则不会检查它们。如果选中复选框,则会将dublicated值添加到数组中。

问题:如何使这些新的复选框从可观察数组中获取数据?我有什么选择

更新: 我最好的猜测是,当服务器使用对象提取新数据时,它们被认为是不同的。那么我是否应该为ko创建自定义绑定以使其基于对象值而不是对象本身进行比较?

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

 <-- ko foreach: arrayOfObjects -->
    <input type="checkbox" data-bind="value: recipientId, checked: $root.selectedRecipients">
 <-- /ko -->

现在selectedRecipients只保留“id”。您可以根据需要重新创建对象数组,所选对象将保持选中状态。

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

的更多信息