我刚刚开始玩Knockout.js,似乎很酷.我有一个网格此网格有一列,顶部有一个复选框以“选择所有”的元素,以及取消选择.标准网格行为.
这是我的代码到目前为止
使用Javascript:
// Define a "banner" class function banner(inventory,name,artType,artSize) { return { isSelected : ko.observable(false),inventory : ko.observable(inventory),name : ko.observable(name),artType : ko.observable(artType),artSize : ko.observable(artSize) }; } var viewmodel = { banners : ko.observableArray([new banner("network","Banner #1"),new banner("oo","Banner #2")]),addBanner : function() { this.banners.push(new banner("network","Banner")); },selectAll : function() { this.banners.isSelected(true) } }; ko.applyBindings(viewmodel);
我将“selectAll”事件绑定到如下复选框:
<th><input data-bind="click: selectAll" type="check@R_301_460@" /></th>
而对于我在列表中的每个单独的横幅,他们的复选框如下所示:
<td><input data-bind="checked: isSelected" type="check@R_301_460@" /></td>
由于某些原因,我的selectAll函数无法正常工作.我对这个OO JavaScript编程范例来说是相当新鲜的,所以我可能会在这里做出明显的错误.
谢谢!
解决方法
在这种情况下,banner是一个数组,因此您需要访问数组中的每个项目并更新单个isSelected属性.
就像是:
ko.utils.arrayForEach(this.banners(),function(banner) { banner.isSelected(true); });