【问题标题】:Using ko.utils.arrayForEach to select check boxes in the table generated by knockout foreach binding使用 ko.utils.arrayForEach 选中敲除 foreach 绑定生成的表中的复选框
【发布时间】:2014-11-17 00:51:43
【问题描述】:

我正在使用敲除 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 可观察数组,如下所示:

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。

【问题讨论】:

  • 你有什么问题?目前还不完全清楚您要完成什么。
  • @JeffMercado 我正在尝试实现选择所有行的功能,该功能应该为表中的每一行设置为 true,该表是使用来自服务器数据的敲除 foreach 绑定生成的:

标签: jquery knockout.js


【解决方案1】:

你需要做这样的事情

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

检查您的需求here

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

【讨论】:

    猜你喜欢
    • 2012-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多