優先順位
優先度は、1 つの要素に複数のディレクティブがある場合にのみ関係します。優先度は、これらのディレクティブが適用/開始される順序を決定します。ほとんどの場合、優先順位は必要ありませんが、コンパイル関数を使用するときに、コンパイル関数が最初に実行されるようにしたい場合があります。
「ターミナル」
また、端末プロパティは、同じ HTML 要素にあるディレクティブにのみ関連します。つまり、ディレクティブに とがあり<div my-directive1></div> <div my-directive2></div>
、互いに影響を与えない場合です。あなたが持っている場合にのみ、それらは互いに影響します。priority
terminal
my-directive1
my-directive2
<div my-directive1 my-directive2></div>
terminal プロパティは、Angular に、その要素の後に続く (優先度が低い) すべてのディレクティブをスキップするように指示します。したがって、このコードはそれをクリアするかもしれません:
myModule.directive('myDirective1', function() {
return {
priority: 1,
terminal: false,
link: function() {
console.log("I'm myDirective1");
}
}
});
myModule.directive('myDirective2', function() {
return {
priority: 10,
terminal: true,
link: function() {
console.log("I'm myDirective2");
}
}
});
myModule.directive('myDirective3', function() {
return {
priority: 100,
terminal: false,
link: function() {
console.log("I'm myDirective3");
}
}
});
この場合、コンソールには「I'm myDirective2」と「I'm myDirective3」のみが表示されます。
<div my-directive1 my-directive2 my-directive3></div>
しかし、この場合、"I'm myDirective1" も表示されます。これらは異なる要素上にあるためです。
<div my-directive1></div>
<div my-directive2></div>
<div my-directive3></div>
元の投稿
あなたの例では、優先度の高いディレクティブが最初に適用されるため、優先度100と1000のディレクティブのみが適用されるため、優先度1000のディレクティブが最初に適用されます。
この場合、優先度 100 のディレクティブが 2 つある場合、同じ優先度のディレクティブの順序が定義されていないため、両方が適用されます。
これは、同じ要素にあるディレクティブにのみ適用されることに注意してください。