Javascript 如何等待子指令渲染?
我有一个指令使用另一个指令:Javascript 如何等待子指令渲染?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我有一个指令使用另一个指令: 内部指令: foo 内部指令控制器: internalDirectiveModule.directive('myInternalDirective',函数($document){ 返回{ 限制:'E', 作用域:{}, //templateUrl:'myInternalDirective.html',//外部指令首先呈现 模板:“foo”,//首先呈现内部指令 链接:功能(范围、元素){ $document.find('body').append('inter
内部指令:
foo
内部指令控制器:
internalDirectiveModule.directive('myInternalDirective',函数($document){
返回{
限制:'E',
作用域:{},
//templateUrl:'myInternalDirective.html',//外部指令首先呈现
模板:“foo”,//首先呈现内部指令
链接:功能(范围、元素){
$document.find('body').append('internal directive\n');
}
};
});
问题是当我对内部指令使用templateUrl
时,外部指令首先呈现,但当我使用template
时,内部指令首先呈现。在内部指令呈现后,我必须从外部指令内部获取数据(link
方法被调用),但我无法实现此行为,因为我假设只使用templateUrl
。如何从父指令的link
方法中的rendered子指令获取数据
您可以尝试以下几种方法:
angular.module('abc').directive('xyz', directive);
directive.$inject = ['$timeout'];
function directive($timeout) {
return {
restrict: 'A',
priority: 100,
link: function ($scope, $element) {
将
link
设置为包含post
函数的对象,而不是函数
link: { post: function() { } }
正如Sidharth&Arlen所说,如果代码中不强制包含此作用域:{},则可以通过正常方式设置优先级,而使用指令中的双向数据绑定则可以非常轻松地设置优先级 你能详细说明你想要达到的目标吗?这对我来说似乎是一个奇怪的用例。谢谢您的回答,但是如何设置优先级呢?在指令定义中,您可以这样指定:priority:100,但是
priority
仅适用于属性指令。您的意思是$timeout(linkFn,1000)
?你认为这是个好主意吗?我想知道它对你是否有效。如果是,那么您至少有一个回退机制。而且,我不认为它会随机断裂。如果有效,解决方案将永远有效。因此,这是一个务实的解决办法。