1

我有两个 ko.observablearray。我用从服务器获得的一些值填充的数组之一:

`self.AllItems = ko.observableArray([]);

function (data) {
   for (var index = 0; index < data.length; index++) {
   self.AllItems.push(data[index]);
   }
 };

第二个数组包含我从模型的特定属性中获得的数据。

self.SelectedItems = ko.observableArray(modelData.Modalities);

这工作正常。

现在我基本上想从“allitems”中删除“selecteditems”。

我试过

self.AllItems.removeAll(self.SelectedItems());

那没有用。然后我在尝试indexOf时遇到异常,说该对象不支持此操作。我彻底糊涂了。请告诉我哪里出错了。

4

1 回答 1

1

我做了一个小提琴来表明你的逻辑是好的。

var all =ko.observableArray([]);

for(var index = 0; index < 10; index++) {
    all.push({'name':('item'+index)});
}

var itemsToRemove = ko.observableArray([])
itemsToRemove.push(all()[2]);
itemsToRemove.push(all()[5]);

all.removeAll(itemsToRemove());

console.log(JSON.stringify(all()));
// results : [{"name":"item0"},{"name":"item1"},{"name":"item3"},{"name":"item4"},{"name":"item6"},{"name":"item7"},{"name":"item8"},{"name":"item9"}] 

你能检查一下 modelData.Modalities 中有什么吗?

于 2013-07-03T13:23:06.657 回答