2013-07-03 56 views
1

我有兩個ko.observablearray。 其中一個數組是我從服務器獲得的一些值:ko.observablearray的附加功能,如removeall,indexOf自帶不受支持

`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

我做了一個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中的內容嗎?

+0

這個問題似乎在別處。我的AllItems列表包含值,我可以看到,因爲我已經綁定到一個UI控件,顯示長度爲零。我無法訪問它中的任何元素。 – Nanda

+0

您確定不應該使用modelData.Modalities()而不是modelData.Modalities? – Damien

+0

是的,工作正常。我還驗證了selectedItems數組的內容。 – Nanda