javascript - AngularJS ng-repeat过滤器性能: custom filter or ng-show/hide

标签 javascript angularjs performance sorting filtering

tl;博士 在 Angular 中过滤大型列表的最佳方法是什么?


这主要是关于性能。

我有一个用 ng-repeat 列出的对象数组。将会有数百到数千个项目。我现在需要根据以下任一条件过滤列表:

  • A.一个简单的属性(例如数字)
  • B.多个条件(某些表达式)

什么选项最好:

  1. 使用自定义过滤器
  2. 使用 ng-show/ng-hide
  3. 使用 ng-if
  4. 根本不要在 View 中进行过滤——也许使用服务+ Controller (?)
  5. 使用 ReactJS (?)

有关用例的详细信息:

  • 我想用::一次绑定(bind)来绑定(bind)大多数对象的属性,尽管有些属性需要双向绑定(bind)(排序分数)
  • 列表将根据独立于用于过滤的字段的字段进行动态排序。过滤掉的项目可能不应该包含在排序中
  • 过滤需要是动态的

所以我找到了 Ben Nadel 的帖子 http://www.bennadel.com/blog/2487-filter-vs-nghide-with-ngrepeat-in-angularjs.htm但我的问题是为了解决一般的标准用例。

最佳答案

如果您使用的是 Angular 1.3,Angular 过滤器已针对性能进行了优化。它们现在是无状态的,并且在原始数据源更改之前不会执行(或重新评估)。旧版本的 Angular 过滤器并非如此。在此处了解这些无状态过滤器 http://blog.thoughtram.io/angularjs/2014/11/19/exploring-angular-1.3-stateful-filters.html

对于旧版本,如果您可以在 Controller 或服务中进行过滤,并始终将过滤结果绑定(bind)到 View ,那就更好了。这是关于保留一个数组,例如 $scope.filteredItem=[];,并在过滤条件发生变化时更新它。 您仍然可以使用 $filter 服务在代码中使用 Angular 过滤器。

关于javascript - AngularJS ng-repeat过滤器性能: custom filter or ng-show/hide,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27672784/

相关文章:

c++ - Linux 与 Windows,C++ 运行时读取 CSV 文件的性能差异

arrays - 计算数组的期望,速度改进的建议

javascript - Ember.js 中的 jQuery $.extend() 等价物是什么?

javascript - 要求子类实现方法而不是公开的

javascript - 如何允许对数据表进行排序?

c++ - 二维数组及其在 C++ 中的性能

javascript - 如何在javascript中正确实现滑动动画?

javascript - 当我的变量作为 AngularJS 中的 $resource 发送时,为什么 ngModel 没有正确更新我的变量?

javascript - 出现未捕获错误 : [$injector:modulerr] in angular js

javascript - ionic 框架 - Angular html 包含