指令优先级在Angular中不起作用

Directive priority in Angular not working

本文关键字:不起作用 Angular 优先级 指令      更新时间:2023-09-26

我有这个元素:

<div ace-editor dl-editor></div>

和这些指令:

angular.module('DLApp')

.directive 'aceEditor', () ->
  restrict: 'A'
  priority: 10
  scope: false
  link: linkFunc1
.directive 'dlEditor', (Graph) ->
    restrict: 'A'
    priority: 0
    scope: false
    link: linkFunc2

(我知道0是默认的)

dlEditor总是先执行,然后是aceEditor。我做错了什么?

根据文档:
<子>强调我的

优先级


当在单个DOM元素上定义了多个指令时,有时有必要指定应用这些指令的顺序。优先级用于在调用指令的编译函数之前对其进行排序。优先级定义为一个数字。优先编译具有更高数值优先级的指令。链接前函数也按优先级顺序运行,,但链接后函数按相反的顺序运行具有相同优先级的指令的顺序是未定义的。默认优先级为0。

因此,具有较高优先级(aceEditor)的指令首先编译,但它的post-link函数(这似乎是您感兴趣的一个)是最后运行的。

您应该移动pre-link函数中的逻辑(如果适用于您的情况)或颠倒优先级。