我有一个指令,它在其他所有操作的最后,以这种方式使用$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"));
}
}
当日志函数发生时,新元素选择器返回一个空数组,但是当我在浏览器中使用控制台记录同一个选择器时,我按预期获得了新元素。当我关闭编译时我甚至不能这样做,所以我知道编译方法正在运行。为什么动画功能不能看到它?
答案 0 :(得分:1)
该元素可能尚未呈现,这就是您可以从调试控制台访问它的原因(在animate
函数运行后很久很久)。
看看这个问题的答案:AngularJS: How can I run a directive after the dom has finished rendering?,我猜这将解决你的问题。