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

时间:2014-11-16 15:23:40

标签: jquery knockout.js

我正在使用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 array,如下所示:

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 observable数组中定义,但我确实想在queryData中的所有项目上运行循环并将isChecked设置为true。

1 个答案:

答案 0 :(得分:0)

你需要做这样的事情

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

根据您的要求检查here

最好的方法是使用计算机,这是类似的东西,你可以使用读/写<{3}}找到它