2016-03-28 14 views
1

私は$digest$watchの機能を理解しています。 modelの値が変更されると、angularが再度実行され、modelの値が頻繁に変更されると、無限ループエラーがスローされることがわかりました。 [OK]を

Example from angular

そして、この例ではinfinite error

<div ng-repeat="user in getUsers()">{{ user.name }}</div> 

... 

$scope.getUsers = function() { 
    return [ { name: 'Hank' }, { name: 'Francisco' } ]; 
    }; 

を投げるが、このコードは、任意のinfinite loopエラーになりません。それはなぜそうですか?また、この例では、とにかく、両方のケースで新しい配列毎回を返すためのドキュメントgetUser機能ごとにエラー

<div> {{getUsers()}}</div> 

... 

$scope.getUsers = function() { 
    return [ { name: 'Hank' }, { name: 'Francisco' } ]; 
    }; 

をスローする必要があります。

ありがとうございます。

+0

@JenishRabadiya:最初のコードがない間に、第2のスニペットは、任意のエラーを投げていない、なぜ私の質問がある

がこのであるべき。 – voila

答えて

3

ng-repeatディレクティブを使用しているためです。数千から数十万の繰り返しを実行する可能性があるため、配列に2つの項目しかなくてもエラーがスローされます。

注意してください。

<div ng-repeat="user in getUsers()">{{ user.name }}</div> 

... 

var users = [ { name: 'Hank' }, { name: 'Francisco' } ]; 

$scope.getUsers = function() { 
    // Same array returned each iteration, no model changes. 
    return users; 
}; 
+0

ちょうどあなたが説明したものに関する良い文書。ありがとう – voila

+0

これを参照してください - http://stackoverflow.com/a/33847397/178163基本的には、各繰り返しの新しい配列を返すので、角度は、モデルが変更されたと考えています。 –

関連する問題