在这个例子中,我得到了2 ng-class,每个都调用了不同的控制器方法,由于某种原因,每个方法被调用了3次,你知道吗?可能是bug?
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' ;
};
}]);http://jsfiddle.net/uDPHL/72/
谢谢
发布于 2013-04-11 23:25:29
这不是一个bug。当Angular编译像ng-class="firstClass()"这样的东西时,它会为它设置一个$watch。摘要循环可能会多次评估每个$watch:
Angular进入$digest循环。该循环由处理$evalAsync队列和$watch列表的两个较小的循环组成。$digest循环不断迭代,直到模型稳定下来,这意味着$evalAsync队列为空,并且$watch列表不会检测到任何更改。-- Overview doc
也是
在将监视器注册到作用域之后,将异步调用侦听器fn (通过$evalAsync)来初始化监视器。在极少数情况下,这是不可取的,因为侦听器是在watchExpression的结果没有改变时调用的。-- $watch docs
因此,预计至少会有两次。
https://stackoverflow.com/questions/15951984
复制相似问题