Phi*_*guy 8 javascript angularjs
在这个例子中,我得到了2 ng-class,每个调用不同的控制器方法,由于某种原因,每个方法被调用3次,任何想法?可能的错误?
var navList = angular.module('navList', []);
navList.controller('navCtrl', ['$scope', '$location', function ($scope, $location) {
$scope.firstClass = function () {
console.log('firstClass');
return 'label label-success' ;
};
$scope.secondClass = function () {
console.log('secondClass');
return 'label' ;
};
}]);
Run Code Online (Sandbox Code Playgroud)
谢谢
这不是一个bug.当Angular编译类似的东西时ng-class="firstClass()",它会为它设置一个$ watch.摘要循环可以多次评估每个$ watch:
Angular进入$ digest循环.循环由两个较小的循环组成,它们处理$ evalAsync队列和$ watch列表.$ digest循环不断迭代,直到模型稳定,这意味着$ evalAsync队列为空,$ watch列表未检测到任何更改.- 概述文件
也
在观察者注册观察者之后,异步调用侦听器fn(通过$ evalAsync)来初始化观察者.在极少数情况下,这是不合需要的,因为当watchExpression的结果没有改变时会调用监听器.- $ watch docs
所以,预计至少两次.
| 归档时间: |
|
| 查看次数: |
3152 次 |
| 最近记录: |