首页 > 解决方案 > 使用“ng-show”进行过滤时,如何在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.

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

标签: javascriptjqueryhtmlangularjs

解决方案


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

推荐阅读