javascript - 使用脚本检查每个复选框时,Knockout 模型不会更新

标签 javascript jquery knockout.js

我有一系列复选框,它们都绑定(bind)到选定值的数组:

var myModel = {
   // ...
   workgroupsImpacted: ko.observableArray([])
};

在顶部,我有一个全选复选框。当选中“全选”复选框时,我运行以下代码:

var subGroups = $('#WorkgroupCB_' + parentId);
$(':input', subGroups).prop('checked', this.checked);

这会选中(或取消选中)相应的复选框控件。这在 UI 方面效果很好,但是绑定(bind)模型不会更新。换句话说,workgroupsImpacted 仍为空。

当我选中取消选中一堆复选框时,是否有一种简单的方法来更新模型?或者,我是否必须循环遍历每个复选框,挖掘值,然后从模型的数组中手动​​添加或删除该值?我希望 Knockout.js 提供一个标准机制来轻松完成此操作。

最佳答案

KnockoutJS中,可观察数组仅跟踪数组中的项目数量并报告更改(即添加/删除项目),但它不会保留跟踪该数组中对象的状态。

听起来您想要一个由可观察对象组成的可观察数组。您是否有一个代表列表中每个复选框的模型对象?

这是一个fiddle显示可观察数组中复选框的跟踪。

关于javascript - 使用脚本检查每个复选框时,Knockout 模型不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17557261/

相关文章:

javascript - 如何在 google map html 页面上打开/关闭 geojson 图层

javascript - 阻止 div 滑过页面顶部

javascript - 根据另一个下拉列表的所选项目更改下拉所选项目

javascript - 借助 Knockout.js 订阅对一组对象进行动画处理?

javascript - MVC5 CRUD 最佳方法

javascript - 如何避免使用 Yarn 在 monorepo 中安装软件包

javascript - 连续执行动态创建的可观察数组

javascript - 如何为用户名约束创建 jQuery Validator 方法?

javascript - 通过Ajax访问js发布的外部文件中的id div

javascript - 在 ASP.NET WebForms 服务器端帖子之间持续 knockout ViewModel ...