在$ compile之后,AngularJS函数不知道新的dom元素

时间:2014-05-23 18:37:13

标签: javascript jquery angularjs dom

我有一个指令,它在其他所有操作的最后,以这种方式使用$compile方法将在内存中创建的新dom元素附加到正文

app.directive('transitionBackground', function ($compile) {
   return {
       restrict: 'E',
       link: function(scope, elem, attrs) {

           ...lots of code...
            function compile () {
                $compile(_stageElement)(scope).appendTo("body");
                animate();                
            }
    function animate() {
        console.log($(".newElement"));
    }

}

当日志函数发生时,新元素选择器返回一个空数组,但是当我在浏览器中使用控制台记录同一个选择器时,我按预期获得了新元素。当我关闭编译时我甚至不能这样做,所以我知道编译方法正在运行。为什么动画功能不能看到它?

1 个答案:

答案 0 :(得分:1)

该元素可能尚未呈现,这就是您可以从调试控制台访问它的原因(在animate函数运行后很久很久)。

看看这个问题的答案:AngularJS: How can I run a directive after the dom has finished rendering?,我猜这将解决你的问题。