Javascript 在何处放置视图渲染后应运行的代码?

Javascript 在何处放置视图渲染后应运行的代码?,javascript,angularjs,Javascript,Angularjs,编辑:事实上,这不是重复的。我要问的是,一旦动态DOM可用,而不是静态DOM,如何运行代码: 因为我的textareas位于ngRepeat中,所以它们在静态DOM中不可用 我在一个角度应用程序中使用。我试图在控制器的开头这样调用autosize: autosize(document.getElementsByTagName('textarea')); 它不起作用,可能是因为在调用函数时,document.getElementsByTagName为空 因此,我需要在呈现DOM元素之后调用该

编辑:事实上,这不是重复的。我要问的是,一旦动态DOM可用,而不是静态DOM,如何运行代码:

因为我的
textarea
s位于
ngRepeat
中,所以它们在静态DOM中不可用


我在一个角度应用程序中使用。我试图在控制器的开头这样调用
autosize

autosize(document.getElementsByTagName('textarea'));
它不起作用,可能是因为在调用函数时,
document.getElementsByTagName
为空

因此,我需要在呈现DOM元素之后调用该函数。我该怎么做


注意:我也试着将它放在
运行
块中,但也不起作用。

这是一个通常被称为“所有DOM内容都转到指令”的实例。将第三方代码与角度数据绑定集成将需要一些额外的措施,但就初始化而言,这很容易:

app.directive('textarea', function ($timeout) {
  return {
    restrict: 'E',
    link: function (scope, element) {
      $timeout(function () {
        autosize(element[0]);
      });
    }
  };
});

$timeout
零延迟确保代码在DOM以初始状态呈现后运行(尤其是
ng repeat
的情况)。

您是否尝试过
?可能重复的@RaphaelAmoedo对我不起作用;查看我的更新。那么声明
textarea
指令是否会把angular的指令弄乱?文档引用了这些指令。没有
textarea
指令,但即使有一个指令,只要它们的作用域、控制器和模板不相互干扰(这同样适用于同一元素上的每一组指令),使用相同名称的多个指令也是完全安全的。