【问题标题】:Which performs better, pre sorting data or Angular orderBy?哪个性能更好,预排序数据或 Angular orderBy?
【发布时间】:2016-02-25 22:22:29
【问题描述】:

如果我有一组提供给我的数据可能未排序,最好在我的控制器中自己对这些数据进行排序,还是只允许 angular 使用 orderBy 在我的 ng-repeat 过滤器中处理排序?

我知道的事情:

  1. 一旦我从 API 加载数据,数据就不会改变。也就是说,不会将新项目添加到集合中,不会从集合中删除项目,并且我有兴趣按字母顺序排序的名称字段永远不会改变。因此,我只需要在每次页面加载时对这些数据进行一次排序。

  2. 显示数据的视图永远不需要更改顺序。也就是说,没有办法改变排序的方向或按不同的列排序。

换句话说,一旦排序,我的数据顺序将保持不变。我目前正在使用 orderBy,但我想知道 angular 是否无缘无故地浪费处理观察元素顺序。在交给 ng-repeat 之前只在我的控制范围内排序一次会更安全吗?如果我这样做,即使我使用名称过滤器或使用 ng-show/hide/if 临时隐藏某些元素,项目是否肯定会保持此顺序?

谢谢。

【问题讨论】:

  • 我建议您进行预排序并将数据放入缓存中。然后从缓存中取出,比每次从 API 中收集数据要快得多。
  • 在控制器中排序总是更快。唯一的问题是,如果您有很多不同的东西,要正确更新它们可能会非常棘手。
  • 太好了,感谢大家确认我怀疑 orderBy 在我的情况下是不必要的开销。我也会考虑其他建议。

标签: javascript angularjs sorting


【解决方案1】:

我建议在加载到屏幕之前先在控制器中进行排序,因为您的数据不是动态的。在每个摘要周期中,您的 ng-repeat 指令将在屏幕上重新呈现数据,并在此处添加 orderBy 过滤器肯定会产生开销,如果您知道此数据永远不会更改,我还建议您缓存数据.

【讨论】:

  • 除此之外,可能会有所帮助的是查看本机绑定,尤其是在数据是静态的情况下。
【解决方案2】:

如果您有大量数据,请在工厂/服务中排序,然后将工厂注入您的控制器中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-22
    • 2012-07-20
    • 2011-11-24
    • 1970-01-01
    • 2022-01-23
    • 2013-01-11
    • 2013-11-28
    • 1970-01-01
    相关资源
    最近更新 更多