【问题标题】:knockout checked binding with dynamicly created checkbox list具有动态创建的复选框列表的淘汰检查绑定
【发布时间】:2015-05-26 09:46:27
【问题描述】:

我的情况如下: 我有 3 个按钮,单击时我正在调用加载对象数组的函数。 该数组用于为其中的每个对象创建表。 表格行包含绑定到相应对象的用户名、用户类型和复选框。 绑定如下

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

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

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

问题:我应该怎么做才能让那些新的复选框从可观察数组中获取数据?我有什么选择

更新: 我最好的猜测是,当服务器使用对象提取新数据时,它们被认为是不同的。那么我应该为ko的checked创建自定义绑定,让它根据对象值而不是对象本身来比较事物吗?

【问题讨论】:

  • 据我了解,当再次创建列表时,这些对象被认为与数组中的对象不同,即使它们的数据和源相同。我应该进行自定义绑定还是什么?
  • 您是否可以创建一个解决问题的jsfiddle。
  • 当服务器汇集数据时,您可能需要循环遍历并匹配 id 以选择项目,因为对象可能不同。
  • 请出示selectedRecipients的代码,以及任何相关代码,以便能够了解您的问题。如果我们看不到 "something",就不可能知道为什么 "something" 不起作用。

标签: knockout.js


【解决方案1】:

您可以执行以下操作:

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

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

更多信息http://knockoutjs.com/documentation/checked-binding.html

【讨论】:

    猜你喜欢
    • 2013-08-06
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2017-08-12
    • 2014-03-30
    相关资源
    最近更新 更多