我在我的角度应用程序中使用第三方指令。我需要使用我自己的指令扩展功能,并遇到指令实例化的顺序。
这些指令的用法如下:
<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
进行实例化吗?
答案 0 :(得分:3)
在声明指令时,您可以使用priority
来决定链接函数的调用顺序。
https://docs.angularjs.org/api/ng/service/$compile#-priority-
按照从最低到最高的顺序调用后链接。您可以查看第三方源代码以查找其订单并将您的订单设置得更低。
.directive('myAdditionalDir', function(){
return {
priority: -1