使用 ko.utils.arrayForEach 选中由 KNOCKOUT foreach 绑定生成的表中的复选框



我正在以下代码的帮助下使用 KNOCKOUT foreach 绑定来生成一个表:

<tbody data-bind="foreach: queryData">
<tr>
<td><input type="checkbox" data-bind="checked: isChecked" /></td>
<td data-bind="text: id"></td>
<td data-bind="text: EN"></td>
<td data-bind="text: CN"></td>
<td data-bind="text: PN"></td>
</tr>
</tbody>

列 id、EN、CN 和 PN 的值是从 AJAX 响应中的 PHP 脚本接收的,该响应设置为 queryData observable 数组,如下所示:

self.queryData($.parseJSON(data));

我定义了以下可观察量:

this.queryData= ko.observableArray();
this.isChecked = ko.observable();

加载完整的表后,我想要一个选项,在 ko.utils.arrayForEach 的帮助下使用以下代码选择表中的所有复选框:

this.selectAll = function(){
ko.utils.arrayForEach(self.queryData(),function(items){
self.isChecked(true);
});
};

我知道 isChecked 没有在 queryData 可观察数组中定义,但我确实想对 queryData 中的所有项目运行循环并将 isChecked 设置为 true。

你需要做这样的事情

this.selectAll = function(){
ko.utils.arrayForEach(self.queryData(),function(items){
items.isChecked(true); // `items` instead of `self` because you are looping here
});
};

摆弄您的要求 检查 这里

最好的方法是使用计算,这是类似的东西,你可以在这里找到它读/写

最新更新