Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何等待子指令渲染?_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

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子指令获取数据


您可以尝试以下几种方法:

  • 将内部指令的优先级设置为高于外部指令的优先级
  • 在超时后触发外部指令的链接函数,如下所示:

    link:function(){$timeout(linkFn,1000,false);}

  • 更新: 以下是设置优先级的示例:

        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)
    ?你认为这是个好主意吗?我想知道它对你是否有效。如果是,那么您至少有一个回退机制。而且,我不认为它会随机断裂。如果有效,解决方案将永远有效。因此,这是一个务实的解决办法。