我正面临着ng-class的问题。
当我点击按钮时,单击函数可以调用次数(ng-repleat中的元素数)。 JsFiddle link
var myModule = angular.module('app', []);
myModule.controller('myCtrl', function($scope) {
$scope.num = [1, 2];
$scope.getClass = function(a) {
console.log("class set");
return true;
};
$scope.clicked = function() {
console.log("clicked");
};
});

.red {
color: red;
}

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="myCtrl">
<button ng-repeat="n in num" ng-class="{'red':getClass('red')}" ng-click="clicked()">{{n}}</button>
</div>
</div>
&#13;
答案 0 :(得分:3)
这里没什么不寻常的。单击时,可能会触发模型中的更改,因此angular会触发摘要周期。
由于getClass
函数绑定到ng-class
指令,因此在摘要期间评估该函数。
注意:您可以通过使用一次性绑定来避免重新计算ng-class
,这是一个有角度的1.3+功能:
ng-class="::{'red':getClass('red')}"
参见 fiddle
答案 1 :(得分:0)
每个$digest
周期调用部分函数,每个触发$digest
运行两次
我已经用触发$digest
http://jsfiddle.net/mgPGS/516/
$scope.testDigest = function(){
$timeout(angular.noop)
}
如果你点击摘要按钮,每个功能都会被触发两次,如果你使用角度1.3+,你可以使用::
进行一次绑定