9

给定一个与此类似的 HTML 结构:

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

当我尝试访问twoIt works 的父元素并且日志返回父 div 时,但是当父是 body 时,one以防万一,它不起作用并返回一个空集。

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

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

4

1 回答 1

0

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

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

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

或者,如果您不想编译整个主体而只想编译新元素:

var elem = $( body.render() ).appendTo($('body'));
$compile(elem)($rootScope);
于 2015-04-15T18:10:05.870 回答