範圍功能和過濾器
AngularJS 具有摘要迴圈,每次執行摘要週期時都會在檢視和過濾器中執行所有功能。每當更新模型時都會執行摘要迴圈,它會降低你的應用程式速度(在頁面載入之前可以多次點選過濾器)。
你應該避免這個:
<div ng-controller="bigCalulations as calc">
<p>{{calc.calculateMe()}}</p>
<p>{{calc.data | heavyFilter}}</p>
</div>
更好的方法
<div ng-controller="bigCalulations as calc">
<p>{{calc.preCalculatedValue}}</p>
<p>{{calc.data | lightFilter}}</p>
</div>
控制器樣本的位置是:
.controller("bigCalulations", function(valueService) {
// bad, because this is called in every digest loop
this.calculateMe = function() {
var t = 0;
for(i = 0; i < 1000; i++) {
t = t + i;
}
return t;
}
//good, because it is executed just once and logic is separated in service to keep the controller light
this.preCalulatedValue = valueService.caluclateSumm(); // returns 499500
});