使用“ ng-show”进行过滤时,如何获取angularJS中过滤数据的总长度?

时间:2019-02-25 06:56:44

标签: javascript jquery html angularjs

为了提高性能,我对代码逻辑进行了如下修改:

修改前

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

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

1 个答案:

答案 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">