0

私はdurundaljsを初めて使用します

ko.observablearrayをフィルタリングする方法を知りたい

define(['services / logger'、'data / data'、'functions / func']、function(logger、data、func){var vm = {list:ko.observableArray([])}; return vm;} );

リスト内のアイテムをフィルタリングしてテーブルに表示したい

ありがとう

4

1 に答える 1

8

Knockoutには、文書化されていないユーティリティ関数がありますが、配列のフィルタリングに役立つライブラリに存在します。

配列を処理するためのすべてのユーティリティメソッドの完全なリストは次のとおりです。

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

Ryan Niemeyerは、それらのいくつかの使用方法についてのすばらしいブログ投稿を書いています。


方法1

始めるための簡単な例を次に示します。

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

これによりnewList、価格が10を超えるアイテムが作成されます。次に、新しいリストを渡すことで、現在のリストを変更できます。

list(newList);

方法2

もう1つのオプションは、削除するアイテムを見つけることです。価格が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を参照することをお勧めします

于 2013-03-26T16:51:26.817 に答える