【问题标题】:AngularJS's filter - performance clarification?AngularJS 的过滤器——性能说明?
【发布时间】:2015-12-05 21:10:59
【问题描述】:

我有read那个

您的 HTML 中的 AngularJS 过滤器将执行(多次!) 每个消化周期。这意味着您的过滤功能,或者您的过滤器将执行多次,即使基础数据或条件没有改变

我猜它的原因是 AngularJs 是如何工作的,所以它需要知道(在多个循环之后)一切都设置正确。

所以基本上是这样的:

<div ng-repeat="stock in ctrl.stocks | filter: ctrl.searchField">
   {{stock.name}}
</div>

应该变成这样:

<div ng-repeat="stock in ctrl.filteredStocks">
        Pre Filtered {{stock.name}}
</div>

通过类似的方式:

  self.filter = function() {
        console.log(1); //for counter
        self.searchField = self.searchFieldModel;
        self.filteredStocks = filterFilter(self.stocks, self.searchField);
    };

如您所见 - 我在控制器中添加了console.log,以便查看此filterStocks 被评估了多少次。

问题

出于观察目的 - 我如何跟踪 filter 在中的次数:

<... ng-repeat="stock in ctrl.stocks | filter: ctrl.searchField">

正在运行吗?

FIDDLE

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    出于观察目的 - 我如何跟踪过滤器的次数

    您可以通过在过滤器工作人员中放置一个简单的console.count 来跟踪它...


    当然,如果您可以对数组进行预过滤,您可以获得性能,但考虑到 AngularJS 的工作原理,优化数据绑定的唯一方法是在您确定数据不可变时使用 :: one-time binding ... 否则,使用 dirty-checking 算法无法提高性能,因为每个摘要循环都会应用差异测试!

    希望有帮助

    【讨论】:

    • 我的问题是关于控制器中过滤的过滤器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多