或 - 确定是否已选择给定项目。
我有一个可以“检查”的对象数组 - 如果选中了一个项目的复选框,则应该为父元素激活一些条件属性(颜色应该更改)。我有条件的东西和复选框工作,我只是无法弄清楚如何有效地监控每个项目当前是否被选中。
我当前的实现迭代“selectedItems”数组,以确定它是否包含每个元素的目标元素。我觉得这是实现这个目标的最糟糕的方法:
var folderViewModel = function (data) {
var self = this;
self.isSelected = ko.computed(function () {
var i = publishedSelectedFolders().length;
debugger;
while (i--) {
if (publishedSelectedFolders[i] === self.folderId()) {
alert("true");
return true;
}
}
return false;
}, self);
.....
任何提示都会很精彩。这是我的小提琴(尽可能简化):
答案 0 :(得分:1)
我会反过来做 - 使用checked
绑定绑定到isSelected
(而不是选定项目的数组):
<input type="checkbox" data-bind="checked: isSelected" />
在每个文件夹上:
self.isSelected = ko.observable(false);
在父母身上:
vm.selectedItems = ko.computed(function() {
return ko.utils.arrayFilter(vm.items(), function(item) {
return item.isSelected();
});
});