gpt4 book ai didi

javascript - 在 AngularJS 中,为什么终端自定义指令的行为会随着内置指令而改变?

转载 作者:行者123 更新时间:2023-11-30 17:43:03 26 4
gpt4 key购买 nike

根据我的理解,将 terminal 设置为 true 将导致该指令最后执行,任何具有更高优先级的指令将在它之前执行(自然),而任何具有较低优先级的指令将根本不执行。

但是,当将自定义指令与内置指令一起使用时,这种行为似乎发生了变化。假设我们使用带有 ng-repeat 的自定义指令,除非自定义指令的优先级小于 1000(这是 ng-repeat 的优先级),否则它不会执行。

这是代表我的问题的 JSFiddle:http://jsfiddle.net/codef0rmer/aNCY3/

引用 JSFiddle 代码,仅使用自定义指令(firstsecond):只要 first 的优先级为2 或更高版本,它将在 second 之前执行。如果它的优先级高于 2,则不会执行。

将自定义指令与内置指令(noEntryngRepeat)结合使用:由于 ngRepeat 的优先级为 1000,如果 noEntry 的优先级为 1000 或更高,它将不会执行,但是,它将以低于 1000 的优先级执行。

最佳答案

我在 my fork 做了一些窥探你的 fiddle ,我发现当自定义指令具有更高的优先级时,它会在 ng-repeat 之前执行。换句话说,它在 li 实际呈现在 DOM 中之前执行。由于没有要追加的列表项,因此什么也不会发生。

您可以看到指令通过在指令中的 return 之前添加一个 console.log 语句并在浏览器上打开控制台来执行,正如我所做的这里:

App.directive('noEntry', function() {
console.log("Testing...");
return {
restrict: 'A',
priority: 1001,
link: function(scope, element, attrs) {
element.append('No Entry: Executed ');
}
};
});

second 中使用 terminal 声明,我没有看到对 no-entry 有任何影响。

关于javascript - 在 AngularJS 中,为什么终端自定义指令的行为会随着内置指令而改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20665068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com