看来 AngularJS 确实非常重视在视图中使用过滤器和其他 ng 指令来过滤和排序数据,而不是在模型中手动执行。这有什么原因吗?比如速度更快、有缓存还是其他原因?
例如,我想显示一个已排序的列表,但我也想访问已排序的列表以用于与视图无关的其他目的。如果列表直接在模型中排序,则非常容易,因此我试图了解这样做是否有缺点。
Thanks!
如果对您有意义的话,我不认为对数据进行预排序有什么问题,但这里有一些使用 Angular 过滤器的优点和缺点。
Pros:
- 视图和模型清晰分离。模型/控制器不需要知道或包含与如何显示/排序/过滤数据相关的代码
- 由于过滤器是在模型改变时执行的按过滤器排序 http://docs.angularjs.org/api/ng.filter:orderBy通过 UI 将项目添加到数组时可以自动排序
- 过滤器可用于格式化数据以供显示(货币过滤器 http://docs.angularjs.org/api/ng.filter:currency例如)以及修改 DOM 添加/删除项目(过滤器 过滤器 http://docs.angularjs.org/api/ng.filter:filter例如)不修改底层模型数据
- 促进常用内置或custom http://docs.angularjs.org/guide/dev_guide.templates.filters.creating_filters过滤功能
Cons:
- 过滤函数编写得不好可能会导致性能问题。您可以在中看到一个故意设计的示例AngularJS Batarang 视频 http://blog.angularjs.org/2012/07/introducing-angularjs-batarang.html4:30 开始。任何代码(不仅仅是过滤器)都可能写得不好,但过滤器被调用的频率最初并不明显。
- 有点令人困惑,因为有些过滤器作用于单个数字/字符串(货币过滤器),有些过滤器作用于数组(orderBy 过滤器)
- 传递参数和过滤器链接的语法也可能有点令人困惑
我确信还有更多优点/缺点,但希望这会有所帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)