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

Javascript AngularJS函数在$compile之后不知道新的dom元素,javascript,jquery,angularjs,dom,Javascript,Jquery,Angularjs,Dom,我有一个指令,在它所做的一切的末尾,用$compile方法将在内存中创建的新dom元素以这种方式附加到主体中 app.directive('transitionBackground', function ($compile) { return { restrict: 'E', link: function(scope, elem, attrs) { ...lots of code... function compi

我有一个指令,在它所做的一切的末尾,用
$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"));
    }

}

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

元素可能还没有渲染,这就是为什么您可以从调试控制台访问它(在
动画
功能运行很久之后)


看看这个问题的答案:,我猜这会解决您的问题。

看起来$compile可能是异步的。你能把
animate()
放到$timeout回调中吗?哈!工作得很有魅力。这对我来说很奇怪,我觉得浏览器总是同步的。想想看吧