我正在阅读这The Complete Book on AngularJS, Ari Lerner
本书,并在 ng-class 上找到了这个示例。generateNumber()
我在函数内部添加了一个额外的 console.log 。我看到它只记录了一次。
x
之后我用generateNumber()
函数调用替换了使用的地方。在我的更改看到这个之后,我的代码看起来像这样:
HTML
<!doctype html>
<html ng-app="myApp">
<head>
<link rel="stylesheet" href="//cdn.jsdelivr.net/foundation/4.3.2/css/foundation.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.js"></script>
</head>
<body>
<div ng-controller="LotteryController">
<div ng-class="{red: generateNumber() > 5}">
You won!
</div>
<button ng-click="generateNumber()">Draw Number</button>
<p>Number is: {{ x }}</p>
</div>
</body>
</html>
JS
angular.module('myApp', [])
.controller('LotteryController', function($scope) {
$scope.generateNumber = function() {
var num = Math.floor((Math.random()*10)+1);
console.log("Number: "+num);
$scope.x = num;
return num;
};
});
所以我无法理解为什么console.log()
被记录了很多次,即使我单击按钮它应该只记录一次但它被记录了多次。我无法理解为什么多次调用该方法。有时我也会遇到这个异常(我只粘贴了前两行)
Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations:
这个 $digest 是干什么用的?以及为什么它达到了极限。什么是观察者?并请说明为什么要进行多次记录?谢谢你们,
编辑
感谢大家的回复,但我想使用类似ng-class="{red: generateNumber() > 5}"
What is wrong 这样的东西。有人可以解释一下吗?我不想在$scope.x
那里使用,所以你们现在可以忽略它。
谢谢你们,