このページ: http://docs.angularjs.org/guide/directive
ディレクティブ定義オブジェクト
ターミナル
Trueに設定されている場合、現在の優先順位は、実行されるディレクティブの最後のセットになります(同じ優先順位での実行順序が定義されていないため、現在の優先順位のディレクティブは引き続き実行されます)。
よくわかりません。 current priority
意味?そのようなディレクティブがある場合:
directive4
はterminal:true
およびその他にはfalse
があります。
Htmlタグがある場合、5つのディレクティブがすべてあります:
<div directive1 directive2 directive3 directive4 directive5></div>
5つのディレクティブの実行順序は何ですか?
優先度
優先順位は、1つの要素に複数のディレクティブがある場合にのみ関係します。優先度は、これらのディレクティブが適用/開始される順序を決定します。ほとんどの場合、優先順位は必要ありませんが、コンパイル機能を使用するときに、コンパイル機能が最初に実行されることを確認したい場合があります。
端末
端末プロパティは、同じHTML要素にあるディレクティブにのみ関連します。つまり、ディレクティブに<div my-directive1></div> <div my-directive2></div>
、priority
およびterminal
が含まれている場合、my-directive1
とmy-directive2
は互いに影響しません。 <div my-directive1 my-directive2></div>
がある場合にのみ、相互に影響します。
端末プロパティは、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つある場合、同じ優先度のディレクティブの順序は定義されていないため、両方とも適用されます。
これは、同じ要素にあるディレクティブにのみ適用されることに注意してください。