7

看来 AngularJS 确实非常重视在视图中使用过滤器和其他 ng 指令来过滤和排序数据,而不是在模型中手动执行。有什么理由吗,即它更快,缓存还是什么?

例如,我想显示一个排序列表,但我也想访问排序列表以用于与视图无关的其他目的。如果列表直接在模型中排序,这很容易,所以我试图了解这样做是否有缺点。

谢谢!

4

1 回答 1

9

如果对您有意义,我认为对数据进行预排序没有任何问题,但这里有一些使用 Angular 过滤器的优点和缺点。

优点:

  • 视图和模型的清晰分离。模型/控制器不需要了解或包含与如何显示/排序/过滤数据相关的代码
  • 由于过滤器在模型更改时执行,因此orderBy 过滤器可以在通过 UI 将项目添加到数组时自动排序
  • 过滤器可用于格式化数据以供显示(例如货币过滤器)以及修改 DOM 添加/删除项目(例如过滤器过滤器),而无需修改底层模型数据
  • 促进重用常用的内置或自定义过滤器功能

缺点:

  • 编写不当的过滤器函数可能会导致性能问题。您可以在 4:30 开始的AngularJS Batarang 视频中看到一个故意设计的示例。任何代码(不仅仅是过滤器)都可能写得很糟糕,但最初调用过滤器的频率并不明显。
  • 一些过滤器作用于单个数字/字符串(货币过滤器)和一些数组(orderBy 过滤器)有点令人困惑
  • 传递参数的语法和过滤器的链接也可能有点混乱

我敢肯定还有更多的优点/缺点,但希望这会有所帮助!

于 2012-08-02T06:46:03.473 回答