为了提高性能,我修改了代码逻辑,如下所示:

修改前

该代码在过滤大量数据(大约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那样提高。

让我知道是否需要更多信息以使问题更加清楚。

最佳答案

<li ng-repeat="item in ctrl.filteredReport = (ctrl.updatedData |
filter:ctrl.filterByQuarter:strict | filter:searchText)">

眨眼间,它就可以从DOM中删除/添加项目。

但是,处理大量数据的速度较慢。但是ng-show可以隐藏/显示元素,而不是删除它们,同样可以提高性能

您可以按照@Alex Toby的说明使用track by获取索引并编写自定义函数
<li ng-repeat="item in ctrl.filteredReport = (ctrl.updatedData |
    filter:ctrl.filterByQuarter:strict | filter:searchText) track by $index">

关于javascript - 使用 “ng-show”完成过滤后,如何在angularJS中获得过滤数据的总长度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54860946/

10-09 18:21
查看更多