【问题标题】:Why are the advantages or filter and orderBy?为什么是filter和orderBy的优势呢?
【发布时间】:2012-08-01 14:51:12
【问题描述】:

似乎 AngularJS 真的非常强调在视图中使用过滤器和其他 ng 指令来过滤和排序数据,而不是在模型中手动执行。有什么原因吗,即它更快,缓存还是什么?

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

谢谢!

【问题讨论】:

    标签: angularjs angularjs-orderby


    【解决方案1】:

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

    优点:

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

    缺点:

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

    我确信还有很多优点/缺点,但希望这会有所帮助!

    【讨论】:

    • 有什么技巧可以避免编写糟糕的过滤器函数吗?我发现过滤器会触发很多时间并且不必要,例如加载外部模板。stackoverflow.com/questions/18309755/…
    • 就像 Mark 提到的您提供的链接一样,您可以预先计算/过滤数据并将其设置在您的范围内。您可以使用 $filter 服务在 JavaScript 中的标记中使用相同的过滤器。
    猜你喜欢
    • 1970-01-01
    • 2019-03-29
    • 2014-08-03
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    相关资源
    最近更新 更多