2016-08-23 10 views
0

スコープで$applyをトリガーすると、再帰エラーが多すぎます。

コンソール出力:

Error: too much recursion 
[email protected]://.../lib/angular.js:355:10 
[email protected]://.../lib/angular.js:551:9 
[email protected]://.../lib/angular.js:546:23 
[email protected]://.../lib/angular.js:563:28 
... 

Error: 10 $digest() iterations reached. Aborting! 
Watchers fired in the last 5 iterations: [] 
$RootScopeProvider/this.$get</[email protected]://.../lib/angular.js:7756:19 
$RootScopeProvider/this.$get</[email protected]://.../lib/angular.js:7926:13 
+0

「AngularJS v1.0.3」で使用 – marlo

答えて

0

あまりにも多くの再帰エラー

angularjs上copy法による原因は、あなたのデータが互いに循環参照を持っている場合。例の

$apply()がトリガされると

// you define your objects 
var lot = new Lot(); 
var car = new Car(); 

// you assign create a relation to it 
car.assign(lot); 
lot.assign(car); 

// lets assume that the data on the objects are like this 
car; // {'lot':lot} 
lot; // {'car':car} 

、あなたはそれを呼び出すか、角度はそれを呼び出すかどうか、それはどこかcopyメソッドを呼び出します。

copyは、すべての属性とコピーできるものをコピーしています。上記のデータに当てはまる場合、停止しないと永遠に再発するでしょう。

これによりブラウザでエラーが発生し、Too much recursionエラーが発生します。

ソリューション:

あなたの要素をレンダリングするために必要なデータのみを取得します。 は必要なデータだけを渡します。

自己への先端、上記

var reduced = {'plate':car.get_plate(),'lot':car.get_lot_location()}; 
my_scope.addCar(reduced); 

を私たちのサンプルコードを使用して:デバッグ時ライブラリのunminifiedバージョンを使用しています。 :)

関連する問題