javascript - 使用“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
.
让我知道是否需要更多信息才能使问题更清楚。
解决方案
<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">