指令的依赖
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
我在 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