【问题标题】:How to get total length of filtered data in angularJS when filtering is done using "ng-show"?使用“ng-show”进行过滤时,如何在angularJS中获取过滤数据的总长度?
【发布时间】:2019-02-25 06:56:43
【问题描述】:

为了更好的性能,我修改了代码逻辑如下:

修改前

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

如果需要更多信息以使问题更清楚,请告诉我。

【问题讨论】:

标签: javascript jquery html angularjs


【解决方案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"> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 2014-02-18
    • 2015-02-24
    • 2015-04-08
    相关资源
    最近更新 更多