为了提高性能,我对代码逻辑进行了如下修改:
修改前
此代码在过滤大量数据(大约2000或更多)时的性能非常低。
<tr ng-repeat="item in ctrl.filteredReport = (ctrl.updatedData |
filter:ctrl.filterByQuarter:strict | filter:searchText)">
修改后
此代码大大提高了性能。
<tr ng-repeat="item in ctrl.updatedData"
ng-show="([item] | filter:ctrl.filterByQuarter | filter:ctrl.searchText).length > 0">
问题
修改后,问题是我无法获得表中显示的length of the filtered report
。
在进行修改之前,我能够从
ctrl.filteredReport.length
。
仅供参考
我已经尝试过track by
,但性能没有像ng-show
那样提高。
让我知道是否需要更多信息以使问题更加清楚。
答案 0 :(得分:1)
<li ng-repeat="item in ctrl.filteredReport = (ctrl.updatedData |
filter:ctrl.filterByQuarter:strict | filter:searchText)">
眨眼间,它就可以从DOM中删除/添加项目。
但是,处理大量数据的速度很慢。但是ng-show可以隐藏/显示元素而不是删除它们,同样可以提高性能
您可以使用track by来获取索引并按照@Alex Toby的说明编写自定义函数
<li ng-repeat="item in ctrl.filteredReport = (ctrl.updatedData |
filter:ctrl.filterByQuarter:strict | filter:searchText) track by $index">