编辑:实际上,这不是重复。我问如何在 Dynamic DOM可用后运行代码,而不是 Static DOM:
因为我的textarea
位于ngRepeat
内,所以它们在静态DOM中不可用。
我在Angular应用中使用autosize。我试图在我的控制器开始时这样调用autosize
:
autosize(document.getElementsByTagName('textarea'));
它不起作用,大概是因为在调用函数时,document.getElementsByTagName
为空。
所以我需要在呈现DOM元素之后调用函数。我怎么能这样做?
注意:我也尝试将其放在run
块中,但这也不起作用。
答案 0 :(得分:2)
这是一个通常被描述为'所有DOM内容的实例转到指令'。将第三方代码与Angular数据绑定集成将需要一些额外的措施,但只是为了初始化它很容易:
app.directive('textarea', function ($timeout) {
return {
restrict: 'E',
link: function (scope, element) {
$timeout(function () {
autosize(element[0]);
});
}
};
});
零延迟的 $timeout
确保在使用初始状态呈现DOM之后代码运行(特别是ng-repeat
的情况)。