私は、AngularJSアプリケーションの中で、ページに表示される2つのディレクティブの中から最適な方法を選択し、不要なレンダリング/処理時間を避けようとしています。 ngRepeatループは、最良の方法であるかを知りたい:divラッパーまたはディレクティブタグを使用してディレクティブをフィルタリングする
の場合と同様に、ディレクティブのhtml要素に直接ng-if
を設定することによって:
<div ng-repeat="element in list">
<my-directive-a ng-if="someFunction(element)"></my-directive-a>
<my-directive-b ng-if="!someFunction(element)"></my-directive-b>
</div>
またはディレクティブのテンプレートと使用から最初<div>
を移動することにより、それぞれの指令のラッパーとして使用します。例えば:
<div ng-repeat="element in list">
<div ng-if="someFunction(element)">
<my-directive-a></my-directive-a>
</div>
<div ng-if="!someFunction(element)">
<my-directive-b></my-directive-b>
</div>
</div>
注:各ディレクティブで始まる<div>
要素はので、私は基本的にディレクティブのHTMLの外にそれを取ると、そこng-if
を配置するためにディレクティブ宣言の外に移動します同じ動作を変更することができ
この場合の最適なアプローチは何ですか?何らかの形でそれを行うことによってパフォーマンスに影響がありますか?それとも、同じことですか?リスト内の要素の数が非常に多くなる可能性があると考えてください。
リストが大きい場合は...ビューの少ないウォッチャーが良い。 ng-ifはウォッチを作成し、スコープは 'someFunction'を一度だけ評価しなければならない別のディレクティブに条件をロードするほうが良いかもしれません。これらの指令の詳細については、 – charlietfl