Dans cette page: http://docs.angularjs.org/guide/directive
Objet de définition de directive
terminal
Si la valeur est true, la priorité actuelle sera le dernier ensemble de directives à exécuter (toutes les directives à la priorité actuelle seront toujours exécutées car l'ordre d'exécution sur la même priorité n'est pas défini).
Je ne le comprends pas bien. Qu'est-ce que current priority
signifier? S'il existe de telles directives:
Veuillez noter le directive4
a terminal:true
et d'autres ont false
.
S'il y a une balise html a toutes les 5 directives:
<div directive1 directive2 directive3 directive4 directive5></div>
Quel est l'ordre d'exécution des 5 directives?
Priorité
La priorité n'est pertinente que lorsque vous avez plusieurs directives sur un élément. La priorité détermine dans quel ordre ces directives seront appliquées/démarrées. Dans la plupart des cas, vous n'avez pas besoin d'une priorité, mais parfois lorsque vous utilisez la fonction de compilation, vous voulez vous assurer que votre fonction de compilation s'exécute en premier.
Terminal
La propriété de terminal n'est également pertinente que pour les directives qui se trouvent sur le même élément HTML. Autrement dit, si vous avez <div my-directive1></div> <div my-directive2></div>
, priority
et terminal
dans vos directives my-directive1
et my-directive2
n'affecteront pas les uns les autres. Ils ne s'influenceront que si vous avez <div my-directive1 my-directive2></div>
.
La propriété du terminal indique à Angular d'ignorer toutes les directives sur cet élément qui le suit (priorité inférieure). Donc, ce code pourrait le clarifier:
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");
}
}
});
Pour cela, vous ne voyez que "I'm myDirective2" et "I'm myDirective3" dans la console.
<div my-directive1 my-directive2 my-directive3></div>
Mais pour cela, vous verriez également "I'm myDirective1", car ils sont sur différents éléments.
<div my-directive1></div>
<div my-directive2></div>
<div my-directive3></div>
Message d'origine
Dans votre exemple, les directives de priorité 100 et 1000 sont les seules qui seront appliquées, car une directive de priorité supérieure est appliquée en premier, donc celle de priorité 1000 sera appliquée en premier.
Si vous avez deux directives avec la priorité 100 dans ce cas, les deux seront appliquées car l'ordre des directives avec la même priorité n'est pas défini.
Notez que cela ne s'applique qu'aux directives qui se trouvent sur le même élément.