5

変数に基づいて使用するディレクティブを選択したい。具体的には、リストにいくつかの異なるタイプのアイテムがあるので、アイテム タイプを使用して、それを表示できるディレクティブを選択したいと考えています。

ng-switch は、こ​​の目的を意図しているようです。ただし、すべてのスイッチの選択肢を DOM に追加してから、1 つを除いてすべて非表示にします。多くの項目タイプまたは表示する長いリストがある場合、このアプローチは非効率的と思われます。また、スイッチを使用すると、ロジックが HTML に配置されます。おそらく次のような、正しいディレクティブを選択する「戦略パターン」が望ましいでしょう。

<display-{{item.type}} data="item.data" />

ここで、ディレクティブは「displayType1」、「displayType2」などです。ただし、おそらくコンパイル フェーズとリンク フェーズの違いが原因で、この構文は機能しないようです。ディレクティブ内で html テンプレートを切り替える例を次に示しますしかし、モジュール性を維持しながらディレクティブを切り替える方法はありますか?

4

2 に答える 2

1

そのような動的ディレクティブ名を追加する方法を知りません。いくつかの代替案:

1) item.type をパラメーターとして 1 つのディレクティブを使用するだけで、値に応じてディレクティブの動作が異なります。

2) ng-switch の代わりに、要素を非表示にするのではなく実際に DOM から要素を削除する ng-if を使用します (ng-hide や ng-switch など)。

于 2013-09-06T16:44:15.747 に答える