Angularjs 在指令链接函数中访问父元素(主体)
给定与此类似的HTML结构: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(
<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函数中调用了该指令。我能解决这个问题吗 事实上,您正确地理解了您的问题:$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);