指令的依赖性

时间:2016-06-22 08:58:28

标签: javascript angularjs angularjs-directive directive angular-directive

我在我的角度应用程序中使用第三方指令。我需要使用我自己的指令扩展功能,并遇到指令实例化的顺序。

这些指令的用法如下:

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

每当添加一个Item时,我想根据third-party-dir执行一些代码。但是,my-additional-dir首先会被实例化,因此third-party-dir - link函数尚未执行。我尝试使用&#34; require&#34;添加依赖项。但是由于thirdPartyDir不使用控制器(只有链接函数),因此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!

我研究了前后链接功能,但默认链接功能已经是后链接功能。关于我如何等待&#34;的任何提示在我的指令中执行代码之前要third-party-dir进行实例化吗?

1 个答案:

答案 0 :(得分:3)

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

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

按照从最低到最高的顺序调用后链接。您可以查看第三方源代码以查找其订单并将您的订单设置得更低。

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