如何理解指令的“terminal”?

2024-01-25

在此页面中:http://docs.angularjs.org/guide/directive http://docs.angularjs.org/guide/directive

指令定义对象

terminal

如果设置为 true,则当前优先级将是最后一组将执行的指令(当前优先级的任何指令仍将执行,因为相同优先级的执行顺序未定义)。

我不太明白。什么是current priority意思是?如果有这样的指令:

  1. 指令 1 与 { 优先级: 1,终端: false}
  2. 指令 2 与 { 优先级:10,终端: false}
  3. 指令 3 与 { 优先级:100,终端: false}
  4. 指令4与{优先级:100,终端:true} //这是真的
  5. 指令 5 与 { 优先级:1000,终端: false}

请注意directive4 has terminal:true和其他人有false.

如果有一个 html 标签包含所有 5 个指令:

<div directive1 directive2 directive3 directive4 directive5></div>

这5条指令的执行顺序是什么?


Priority

仅当一个元素上有多个指令时,优先级才相关。优先级决定了这些指令的应用/启动顺序。在大多数情况下,您不需要优先级,但有时当您使用编译函数时,您希望确保编译函数首先运行。

Terminal

Terminal 属性也仅与同一 HTML 元素上的指令相关。也就是说,如果你有<div my-directive1></div> <div my-directive2></div>, priority and terminal在你的指令中my-directive1 and 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 的指令,则这两个指令都将被应用,因为具有相同优先级的指令的顺序未定义。

请注意,这仅适用于同一元素上的指令。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何理解指令的“terminal”? 的相关文章

随机推荐