优先
仅当在一个元素上有多个指令时,优先级才有意义。优先级确定将以什么顺序应用/启动这些指令。在大多数情况下,您不需要优先级,但是有时在使用编译功能时,您需要确保编译功能先运行。
终奌站
terminal属性也仅与相同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"); } }});
为此,您只会在控制台中看到“我是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的指令,则将同时应用这两个指令,因为具有相同优先级的指令的顺序未定义。
请注意,这仅适用于同一元素上的指令。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)