在这个页面: http://docs.angularjs.org/guide/directive
指令定义对象
终奌站
如果设置为true,那么当前的首要任务将是最后一组将执行指令(未定义在当前优先权任何指示仍将执行上相同的优先级执行顺序)。
我不明白它做好。 什么是current priority
是什么意思? 如果有这样的指令:
- 指令1与{优先权:1,终端:假}
- 指令2与{优先权:10,终端:假}
- 含{:100,终端:假优先} directive3
- directive4含{优先权:100,终端:真} //这是真的
- directive5含{优先权:1000,终端:假}
请注意, directive4
具有terminal:true
等都有false
。
如果有一个HTML标签有所有5个指令:
<div directive1 directive2 directive3 directive4 directive5></div>
什么是5个指令的执行顺序?
优先
当你有一个元素上的多个指令优先级才有意义。 以什么顺序这些指令将被应用的优先级决定/启动。 在大多数情况下,你不会需要一个优先事项,但有时当你使用编译功能,你要确保你的编译功能,首先运行。
终奌站
终端属性也只对是相同的HTML元素指令相关。 也就是说,如果你<div my-directive1></div> <div my-directive2></div>
priority
和terminal
在您的指示my-directive1
和my-directive2
不会相互影响。 如果你有他们只会相互影响<div my-directive1 my-directive2></div>
终端属性告诉角跳过之后(低优先级)附带该元素的所有指令。 所以这个代码可能会清除掉:
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");
}
}
});
对于这一点,你只看到“我myDirective2”,并在控制台“我myDirective3”。
<div my-directive1 my-directive2 my-directive3></div>
但对于这一点,你会看到“我myDirective1”为好,因为它们是在不同的元素。
<div my-directive1></div>
<div my-directive2></div>
<div my-directive3></div>
原帖
在你的榜样,优先100和1000的指令都将得到应用唯一的,因为具有较高优先级的指令被首先应用,所以优先1000人会被首先应用。
如果在这种情况下有两个指令优先级100,他们都将被应用,因为指令具有相同的优先级顺序是不确定的。
请注意,这仅适用于那些在相同的元素指令。