2016-06-17 11 views
2

複数の名前に一致するAngularディレクティブを作成するにはどうすればよいですか?私は異なるIDを持つ一連の<div>要素(数百の良いカップル)を持っています。私はこれらのIDの一部にしか一致しない単一のディレクティブを書きたいと思います。複数の名前に一致する角度ディレクティブ

このようなディレクティブは、私が持っている<div>の多数のすべての要素に対して呼び出されるため、オプションではありません。

directive('div', function(){ 
    return { 
     restrict: 'e', 

     link: function(scope, ele, attr) { 
     if (attr.id !== 'divX' || attr.id !== 'divY') 
      return; 

     processElement(); 
     } 
    } 
}) 

また、私が必要とするすべてのIDのための指令を書くことはできません。選択された<div>要素に別の属性を追加することも実用的ではありません。

角度指示文には複数の名前が一致する機能がありますか?

directive('divX', 'divY', function(){ 
    //... 
}) 
+0

これを行う理由は何ですか?これらのdivのいくつかに同じコントローラを共有したい場合は、 'div'ディレクトリを変更するのではなく、それらをカスタムディレクティブに置き換える必要があります。これらのdivのレイアウトを変更する必要がある場合は、cssを使用してカスタムのクラスを作成できます。 –

+0

これは、かなり大きい既存のアプリケーションを変更するためのものです。いくつかの部門だけが行動する必要があります。私はこれらの指示の間で何かを共有したくない。それは意図ではありません。 –

+0

特定の 'id'で要素を取得するためにディレクティブを使用することを主張するなら、どんな解決策でも' div'sのコレクションを横断する必要があると思います。 – jkris

答えて

0

angular.module('ui.directives', []) 
 
     .directive('divX', myDirective) 
 
     .directive('divY', myDirective);

よう

何かが、それはあなたのケースで動作しますか?

+0

私はこのアプローチが選択肢ではないことを非常に明確に私の質問で述べました。 *** //また、私が必要とする全てのIDのための指令を書くことはできません*** –

+0

@CharlieH ..複数の要素をマッチングさせることはどういう意味ですか?どの識別子を使用していますか? –

+0

角度は、E、A、C、またはMのディレクティブの要素に一致することができます。ディレクティブが移動する特定の名前です。私は複数の名前があるかもしれないかどうかを知る必要があります。 –

1

は厳密にあなたの質問に答える:

角度ディレクティブは、複数の名前をマッチングサポートする任意の機能を提供していますか?

あなたはIDを意味することであれば、NO、角度が1つでも一つに、IDSにディレクティブを関連付ける可能性を提供していません。

あなたのディレクティブは、のdivているいくつかの要素をターゲットにする場合は、これらすべての要素に共有クラスを追加し、このクラスをターゲットディレクティブを使用する必要があります

<div id="divX" class="user">John</div> 
<div id="divY" class="user">Paul</div> 

および

directive('user', function(){ 
    return { 
    restrict: 'C', 
    link: function(scope, ele, attr) { 
     processElement(); 
    } 
    }; 
}); 
関連する問題