我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">
正在运行?
答案 0 :(得分:0)
出于观察目的 - 如何在
中跟踪过滤器的次数
您可以通过在过滤器工作程序中放置一个简单的console.count
来跟踪它...
当然,如果您可以预先过滤阵列,那么您可以获得性能,但考虑到AngularJS的工作原理,优化数据绑定的唯一方法是在您确定时使用::
one-time binding你的数据是不可变的......
否则,使用脏检查 alghoritm,没有办法增加性能,因为差异测试应用于每个摘要周期!
希望帮助