1

我正在开发我的第一个 Angular 应用程序并收到以下错误:

未捕获的错误:达到 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;
      };      
    }

索引.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>
4

2 回答 2

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);

发生错误的原因超出了我的范围......

于 2013-07-10T04:58:57.350 回答
0

您提到的错误通常发生在您对属性创建更改循环时。

例如,当您监视某个属性的更改,然后在侦听器上更改该属性的值时。确保您的代码没有这种情况。

于 2013-07-10T05:22:25.910 回答