2013-03-26 43 views
0

我是新來durundaljsDurandaljs:如何篩選ko.observablearray

我想知道如何才能篩選的ko.observablearray

定義([ '服務/記錄器',「數據/ data','functions/func'],函數(記錄器,數據,func)var vm = {0,1,2,3}

我要篩選的項目列表中,並在表中顯示它

感謝

回答

8

淘汰賽具有未記錄的實用功能,但它們的存在瓦特/庫,以幫助過濾陣列。

這裏是所有的工具方法處理陣列的完整列表:

ko.utils.arrayFilter 
ko.utils.arrayFirst 
ko.utils.arrayForEach 
ko.utils.arrayIndexOf 
ko.utils.arrayMap 
ko.utils.arrayPushAll 
ko.utils.arrayRemoveItem 
ko.utils.compareArrays 
ko.utils.unwrapObservable 

和瑞安·尼邁耶寫了一個漂亮的blog post有關如何使用其中的幾個。


方法1

下面是一個簡單的例子,讓您開始:

var newList = ko.utils.arrayFilter(list(), function(item) { 
    return item.price > 10; 
}); 

這將創建具有價格比10 然後你就可以改變你的當前項目的newList通過它傳遞新列表:

list(newList); 

方法2

另一種方法是找到要刪除的項目。說你要刪除與價格的所有項目超過10:

var rList = ko.utils.arrayFilter(list(), function(item) { 
    return item.price > 10; 
}); 

接下來,您可以撥打:

list.removeAll(rList); 

方法3

而且像他們說的有不止一個比喻皮膚貓的方式:

list.remove(function(item) { return item.price > 10 }); 

你有它..

我相信還有更多的方法可以完成。如果您需要一些更高級的過濾陣列的方法,我建議您看看underscore.js