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

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>
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 に答える