在指令链接函数中访问父元素(正文)

时间:2013-04-30 16:43:35

标签: angularjs angularjs-directive

给定类似于此的HTML结构:

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

当我尝试访问two的父元素时它起作用并且日志返回父div,但当父节点是主体时,如one情况,它不起作用,返回一个空集。

app.directive 'myDirective', ->
    (scope,iElement,iAttrs) ->
        console.log iElement.parent()

编辑:我对此问题的猜测是我的应用程序的正文在客户端呈现并附加到模块的run方法的body元素。 html与$('body').html($compile(body.render())($rootScope));一起插入,我想在将内容插入正文之前,在$ compile函数中调用该指令。我可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

确实你正确地理解了你的问题:$compile将触发元素的模板编译和链接阶段,所以在这样做时它没有父级。

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

var html = body.render();
$('body').html(html);
$compile(angular.element(body))($rootScope);

或者,如果您不想编译整个身体,只需要编译新元素:

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