Javascript 在何处放置视图渲染后应运行的代码?
编辑:事实上,这不是重复的。我要问的是,一旦动态DOM可用,而不是静态DOM,如何运行代码: 因为我的Javascript 在何处放置视图渲染后应运行的代码?,javascript,angularjs,Javascript,Angularjs,编辑:事实上,这不是重复的。我要问的是,一旦动态DOM可用,而不是静态DOM,如何运行代码: 因为我的textareas位于ngRepeat中,所以它们在静态DOM中不可用 我在一个角度应用程序中使用。我试图在控制器的开头这样调用autosize: autosize(document.getElementsByTagName('textarea')); 它不起作用,可能是因为在调用函数时,document.getElementsByTagName为空 因此,我需要在呈现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
指令,但即使有一个指令,只要它们的作用域、控制器和模板不相互干扰(这同样适用于同一元素上的每一组指令),使用相同名称的多个指令也是完全安全的。