我正在处理我的第一个角应用程序,并收到以下错误:
未捕获错误:达到10 $ digest()次迭代。中止!
我认为我已将源代码与使用random()函数隔离开来了。就我读到的关于这个错误的内容而言,这似乎是有意义的(https://github.com/angular/angular.js/issues/705)。但是,我不知道如何避免这个错误。
我用这个简单的代码重新创建了错误:
randtest.js:
function FirstCtrl($scope) {
$scope.randNum= function(){
var rando = Math.floor(Math.random()*100);
return rando;
};
}
的index.html
<!doctype html>
<html ng-app>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script src="randtest.js"></script>
</head>
<body>
<div ng-controller="FirstCtrl">
<h1>{{randNum()}}</h1>
</div>
</body>
</html>
答案 0 :(得分:1)
不要将$ scope属性直接设置为该函数。让scope属性引用函数的结果:
var r = function(){
var rando = Math.floor(Math.random()*100);
return rando;
};
$scope.randomNum =r();
HTML:
<h1>{{randomNum}}</h1>
更新 - 不将计算包装在函数中似乎也避免了错误:
$scope.randomNum = Math.floor(Math.random()*100);
错误发生的原因超出了我的范围......
答案 1 :(得分:0)
当您创建更改属性的循环时,通常会出现您提到的错误。
例如,就像当您监视某个属性的更改,然后在侦听器上更改该属性的值时。 确保您的代码没有这种情况。