カスタム AngularJS の繰り返しディレクティブを作成しようとしています。これは、Angular ディレクティブに基づいて一種のテンプレート言語を作成しているこの特定のケースでは、ngRepeat が私のニーズに合わず、自由に DOM を作成する余裕がないためです。要素。
特に、これらは私が ngRepeat で抱えている問題であり、解決しようとしています:
- リピーター要素が繰り返される要素の親になる必要があります
- 繰り返される要素には異なるテンプレートがあり、ラッパー要素または ngSwitches を使用して異なるマークアップを提供することはできません
次のようなカスタム ディレクティブを作成しました。
- リピーター DOM 要素を空にする
- 現在のスコープを監視し、各呼び出しで配列をループし、反復ごとに新しい DOM 要素を作成し、子スコープで要素をコンパイルします
- 全体をモデルにバインドし続ける
このアプローチの問題は、スコープ $watch fn 呼び出しごとにスコープを変更 (子スコープを作成) しているため、無限ループ (10 $digest エラーが発生) を作成していることです。
この問題にどのようにアプローチできますか? ngRepeat のソースを見てみましたが、私には理解するのがかなり難しいです...
副次的な質問: (今のところ) マイナーな問題は、スコープが変更されるたびに全体を再レンダリングするパフォーマンスです... 配列のアイテムの追加、削除、および更新にさまざまなアクションを実装するのはどれほど難しいでしょうか?