1. ホーム
  2. angularjs

[解決済み] Angularの「10 $digest() iterations reached」エラーのトラブルシューティング方法

2023-02-06 02:33:27

質問

10回の$digest()反復に達しました。中止してください。

しかし、このテキストの多くは、さまざまな関数からのJavascriptコードです。 この問題を診断するための経験則はあるのでしょうか? あるいは、この問題が単なる警告として扱われるべき、十分に複雑なアプリケーションがあるのでしょうか?

どのように解決するのですか?

Ven が言ったように、あなたはそれぞれの $digest サイクルごとに異なる (同一ではない) オブジェクトを返しているか、あるいはデータを何度も変更しているかのどちらかです。

アプリのどの部分がこの動作を引き起こしているのかを把握するための最速の解決策は。

  1. 疑わしい HTML をすべて削除する - 基本的に、テンプレートからすべての html を削除し、警告がないかどうかを確認します。
  2. 警告がない場合 - 削除したHTMLの一部を追加し、問題が再発するかどうかを確認します。
  3. 警告が出るまでステップ2を繰り返す - htmlのどの部分が問題の原因なのかが分かるでしょう。
  4. さらに調査してください - ステップ 3 の部分は $scope にあるオブジェクトを変異させるか、あるいは各 $digest サイクルごとに
  5. をまだ持っている場合 $digest の繰り返しの警告が出るようなら、おそらく何か非常に怪しいことをしているのでしょう。親テンプレート/スコープ/コントローラに対して同じ手順を繰り返します。

また、カスタムフィルタの入力が変更されていないことを確認するために

JavaScriptでは、通常期待されるような動作をしない特定のタイプのオブジェクトがあることに留意してください。

new Boolean(true) === new Boolean(true) // false
new Date(0) == new Date(0) // false
new String('a') == new String('a') // false
new Number(1) == new Number(1) // false
[] == [] // false
new Array == new Array // false
({})==({}) // false