ko.observablearray的附加功能,如removeall,indexOf不支持

时间:2013-07-03 13:08:14

标签: knockout.js ko.observablearray

我有两个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,该异常表示该对象不支持此操作。我很困惑。请告诉我哪里出错了。

1 个答案:

答案 0 :(得分:1)

我做了一个fiddle来证明你的逻辑很好。

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中的内容吗?