javascript - 应该在渲染 View 后运行的代码放在哪里?

标签 javascript angularjs

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

enter image description here

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


我正在使用 autosize在 Angular 应用程序中。我试图在我的 Controller 开始时像这样调用 autosize:

autosize(document.getElementsByTagName('textarea'));

它不起作用,大概是因为在调用函数时,document.getElementsByTagName 是空的。

所以我需要在呈现 DOM 元素后 调用该函数。我该怎么做?

注意:我也试过将它放在 run block 中,但这也没有用。

最佳答案

这是通常被描述为“所有 DOM 内容都交给指令”的实例。将第三方代码与 Angular 数据绑定(bind)集成将需要一些额外的措施,但只是为了初始化就这么简单:

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

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

关于javascript - 应该在渲染 View 后运行的代码放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32379951/

相关文章:

angularjs - Accordion 内的 ui bootstrap datepicker 不可见

angularjs - 取消路由并重定向到其他路由而不在AngularJS中显示原始内容

javascript - 是否可以将 GIF 添加到打开图层 3 map ?

javascript - 使 anchor 链接超出链接到的位置上方一些像素

javascript - 限制选中的复选框数量

php - undefined index 传递变量与 javascript 到 php

angularjs - Protractor 能否点击 Flash 的 "Adobe Flash Player Settings"提示?

javascript - 如何在 Angular js 应用程序中调用 Jquery 插件

javascript - $资源:badcfg when calling sharepoint rest service using angular

javascript - JavaScript 中逻辑表达式的短路评估