У меня есть простой поисковый фильтр <input>
, настроенный для списка имен элементов в AngularJS
.
Мой список выглядит следующим образом:
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
}
Я повторяю этот список в Angular и распечатываю результаты в <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 выглядит следующим образом:
var selectedData = {category1: [item1:true], category2: [], category3: []); // if 'item1 checkbox is checked.
Этот список работает отлично, хотя filter
довольно отсталый, даже на моем довольно быстром компьютере. При вводе буквы на вход требуется 1-2 секунды для обновления списка.
Я знаю, что это, вероятно, потому, что я фильтрую около 1000 элементов за раз, но я не видел никаких обсуждений этого в другом месте.
Есть ли способ улучшить производительность фильтра?