AngularJS
の項目名のリストに対して単純な<input>
検索フィルターが設定されています。AngularJS 'ng-filter'は〜1000個の要素の配列で非常に遅いです
var uniqueLists = {
category1: ['item1', 'item2', 'item3' ... 'item180' ], // Real list contains ~180 items
category2: ['itemA', 'itemB', 'itemC' ... 'itemZZZ' ], // Real list contains ~1080 items
category3: ['otheritem1', 'otheritem2', 'otheritem3' ] // Real list contains 6 items
}
私は角にこのリストを反復処理し、各カテゴリの<ul>
で結果をプリントアウト:
私のリストは次のようになります。明確にするために
<div ng-repeat="(key,val) in uniqueLists">
<form ng-model="uniqueLists[index][0]">
<input ng-model="searchFilter" type="text" />
<ul>
<li ng-repeat="value in val | filter: searchFilter">
<label>
<input type="checkbox" ng-model="selectedData[key][value]" />
{{value}}
</label>
</li>
</ul>
</form>
</div>
、selectedDataは次のようになります。filter
も私の非常に高速のコンピューター上で、非常にラグがあるが
var selectedData = {category1: [item1:true], category2: [], category3: []); // if 'item1's checkbox is checked.
このリストに、うまく働いています。入力に文字を入力すると、リストが更新されるのに1〜2秒かかります。
私は一度に約1000個のアイテムをフィルタリングしている可能性が高いと認識していますが、他の場所でこれについての議論はありませんでした。
フィルタのパフォーマンスを向上させる方法はありますか?
あなたのコードでjsfiddle本当にこの場合に役立ちます。また、私は、ループ内のループを持っていることを想像することができますし、フィルタはかなりです、私はまた、最初のループの内部にフォームを作成しています。 jsffidleは本当に助けてくれるでしょう; – dcodesmith