我<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's checkbox is checked.
这个列表工作得很好,虽然filter
它相当滞后,即使在我相当快的计算机上也是如此。在输入中键入一个字母需要 1-2 秒来更新列表。
我知道这很可能是因为我一次过滤了大约 1000 个项目,但我没有在其他地方看到任何关于此的讨论。
有没有办法让过滤器获得更好的性能?