次のコードがあります。ng-repeatで無限のダイジェストループを引き起こす関数を使用する
https://plnkr.co/edit/Tt7sWW06GG08tdJu72Fg?p=preview。ウィンドウ全体を拡大して全体のビューを表示してください。
私はcategories
とsub-categories
を上記のplunkrに示すようにnavbarに表示します。各カテゴリには、表示するサービス/サブカテゴリがあります。
2つのネストされたng-repeats
を使用しています。内側のものは、親の反復の値をng-repeat
としています。私はDocumentsFactory
からgetServicesByCategory
を呼び出してpromise
を呼び出す配列subcategories
のデータを返すように内部に関数getServicesByCategory
を添付しました。これは最終的に内部ng-repeat
によって反復されるはずです。
カテゴリは表示されていますが、サブカテゴリは表示されません。
これには2つの問題があります。
1)。サブカテゴリはすべてのカテゴリで同じように表示され、表示されているサブカテゴリは外部ngリピート反復の最後のカテゴリ、つまりUtility Services
に属します。代わりに、各カテゴリはそれ自身のサブカテゴリを示すべきです。
2)。コンソールには、http://errors.angularjs.org/1.5.6/ $ rootScope/infdig?p0 = 10 & p1 =%5B%5Dがコンソールで繰り返し表示されるため、複数のエラーinfinite digest cycle
が10を超えているために中止されています。メソッドgetServicesByCategory
は、複数のダイジェストサイクルをトリガする無限ループで呼び出されています。
Angularのdirty checking
とdigest cycles
で複雑な単純なカテゴリの問題のようです。
ng-repeatに関連する関数の中に新しいオブジェクトを返さないように提案している複数のスレッドと投稿を読んでいます。私はsubcategories
の参照を返しています。
inner
ng-repeatは、outer
のデータに依存します。 ng-repeatに関数をバインドすることは、私にとっては単なる選択肢でした。これは正しいアプローチですか?カテゴリとサブカテゴリを取得するためのAPIは異なりますし、それらを変更する柔軟性はありません。私は解決策を考え出すことができませんでした。各カテゴリに対して適切なサブカテゴリを作成するだけです。
ご協力いただきますようお願い申し上げます。
注:ビューをフルウィンドウで開くと、左側のナビゲーションバーが表示されます。