Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Angularjs 在指令链接函数中访问父元素(主体)_Angularjs_Angularjs Directive - Fatal编程技术网

Angularjs 在指令链接函数中访问父元素(主体)

Angularjs 在指令链接函数中访问父元素(主体),angularjs,angularjs-directive,Angularjs,Angularjs Directive,给定与此类似的HTML结构: <body> <div id="one" my-directive></div> <div> <div id="two" my-directive></div> </div> </body> 编辑:我猜这个问题是我的应用程序的主体在客户端呈现,并附加到模块的run方法的body元素。html插入时带有$('body').html(

给定与此类似的HTML结构:

<body>
    <div id="one" my-directive></div>
    <div>
        <div id="two" my-directive></div>
    </div>
</body>

编辑:我猜这个问题是我的应用程序的主体在客户端呈现,并附加到模块的run方法的body元素。html插入时带有
$('body').html($compile(body.render())($rootScope)) 事实上,您正确地理解了您的问题:
$compile
将触发元素上的模板编译和链接阶段,因此执行此操作时它没有父级

解决这个问题的简单方法是首先将HTML附加到正文中,然后编译它

var html = body.render();
$('body').html(html);
$compile(angular.element(body))($rootScope);
或者,如果您不想编译整个正文,只想编译新元素:

var elem = $( body.render() ).appendTo($('body'));
$compile(elem)($rootScope);

似乎按预期工作:这很奇怪,现在我有了一些可能是问题的线索。请尝试在链接函数中使用(在角度摘要循环之后执行,因此在角度DOM操作之后,但在浏览器渲染之前)或(在浏览器渲染之后执行)。ng应用程序在哪里?
var elem = $( body.render() ).appendTo($('body'));
$compile(elem)($rootScope);