如果ko.observableArray中有一个ko.observableArray,我如何从中删除项目,甚至选择该数组
答案 0 :(得分:1)
通常,您用易于识别的东西包装数组。喜欢:
this.boxes = ko.observableArray([
{ id: 1, items: ko.observableArray([1, 2, 3]) },
{ id: 2, items: ko.observableArray([4, 5]) }
]);
如果您不想这样做,最好在包装数组之前保存对数组的引用:
const firstBox = ko.observableArray([1, 2, 3]);
const secondBox = ko.observableArray([4, 5]);
this.boxes = ko.observableArray([firstBox, secondBox]);
firstBox.remove(2);
请注意,此删除操作将不会触发boxes
上的更新。
您还可以查找包含要删除的项目的数组。一旦有多个匹配项,您就必须决定要做什么...
this.boxes = ko.observableArray([
ko.observableArray([1, 2, 3]),
ko.observableArray([4, 5])
]);
const remove = x => {
const inBoxes = this.boxes().filter(box => box().includes(x));
if (inBoxes.length !== 1) // What to do here?
else inBoxes[0].remove(x);
};
remove(2);