指令的依赖

Dependencies of directives

我在 angular 应用程序中使用第三方指令。我需要用我自己的指令扩展功能,运行 遇到指令实例化顺序的问题。

这些指令旨在像这样使用:

<third-party-dir ng-repeat="item in items" my-additional-dir>
    <some-content />
</third-party-dir>

每当添加项目时,我都想根据 third-party-dir 执行一些代码。但是 my-additional-dir 首先被实例化,因此 third-party-dir-link 函数还没有执行。我尝试使用 "require" 添加依赖项,但由于 thirdPartyDir 不使用控制器(仅 link 函数),angular 抛出错误。

.directive('myAdditionalDir', function(){
    return {
        require: '^thirdPartyDir'
        restrict: 'A'
        link: function(scope, element, attrs){
        if (scope.$last){
            //some code            
        }    

        }
    }
})

Error: [$compile: ctreq] Controller 'thirdPartyDir', required by directive 'myAdditionalDir', can't be found!

我查看了 pre- 和 post-link 函数,但默认的 link- 函数已经是 post-link 函数。在我的指令中执行代码之前,关于如何 "wait" 实例化 third-party-dir 的任何提示?

声明指令时,您可以使用 priority 来决定 link 函数的调用顺序。

https://docs.angularjs.org/api/ng/service/$compile#-priority-

post-link按从低到高的顺序调用。您可以查看第三方源代码以发现其顺序并将您的顺序设置得更低。

.directive('myAdditionalDir', function(){
    return {
        priority: -1