【发布时间】:2016-02-25 22:22:29
【问题描述】:
如果我有一组提供给我的数据可能未排序,最好在我的控制器中自己对这些数据进行排序,还是只允许 angular 使用 orderBy 在我的 ng-repeat 过滤器中处理排序?
我知道的事情:
一旦我从 API 加载数据,数据就不会改变。也就是说,不会将新项目添加到集合中,不会从集合中删除项目,并且我有兴趣按字母顺序排序的名称字段永远不会改变。因此,我只需要在每次页面加载时对这些数据进行一次排序。
显示数据的视图永远不需要更改顺序。也就是说,没有办法改变排序的方向或按不同的列排序。
换句话说,一旦排序,我的数据顺序将保持不变。我目前正在使用 orderBy,但我想知道 angular 是否无缘无故地浪费处理观察元素顺序。在交给 ng-repeat 之前只在我的控制范围内排序一次会更安全吗?如果我这样做,即使我使用名称过滤器或使用 ng-show/hide/if 临时隐藏某些元素,项目是否肯定会保持此顺序?
谢谢。
【问题讨论】:
-
我建议您进行预排序并将数据放入缓存中。然后从缓存中取出,比每次从 API 中收集数据要快得多。
-
在控制器中排序总是更快。唯一的问题是,如果您有很多不同的东西,要正确更新它们可能会非常棘手。
-
太好了,感谢大家确认我怀疑 orderBy 在我的情况下是不必要的开销。我也会考虑其他建议。
标签: javascript angularjs sorting