javascript - 在 Angular 引导之后向 DOM 添加指令

标签 javascript angularjs

我正在尝试在 Angular 引导后向 DOM 添加一些指令。如果我在运行 block 中执行此操作,它会完美工作,但是如果我添加延迟,则不会显示指令。 看看我的 fiddle ,这样你就明白我的意思了:https://jsfiddle.net/wLddmctp/

var app = angular.module("myApp", ["docsSimpleDirective"]);

app.run(function ($timeout) {

    $timeout(function () {
        var container = document.getElementById("container");
        var box = document.createElement("div");
        box.innerHTML = "<div my-customer></div>";
        container.appendChild(box);
    }, 3000);
});

谁能解释一下这是什么原因,以及如何解决这个问题?

谢谢

最佳答案

你需要手动编译新的 HTML,因为如果你在超时时使用它,Angular 已经完成了解析和渲染。

因此您需要使用具有正确范围的 $compile 服务。

var scope = angular.element(container).scope();
$compile(box)(scope);

演示: https://jsfiddle.net/wLddmctp/1/

话虽这么说,您可以看到,使用 $compile 时,代码变得有点笨拙,尤其是获得正确的元素范围。我建议使用自定义服务/指令来动态注入(inject) HTML,运行 block 不是执行此操作的理想位置。

关于javascript - 在 Angular 引导之后向 DOM 添加指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30557621/

相关文章:

ruby - 获取 TypeError - 无法克隆符号 : error when using active_model_serializer

javascript - 在 JQuery 中从 Angular 调用 ng-attr-id

javascript - Angular 获取 ng-model 属性,例如。最小长度

javascript - 通过单击按钮添加行

javascript - 类在风格之前改变

javascript - token '==' 是意外的 ngClass

android - 如何创建一个可以订阅来自 drupal CMS 的推送通知的 Angular 应用程序?

JavaScript(Angular)数组没有返回?

javascript - 为什么在 JavaScript 函数体内调用 await 需要异步?

javascript - ng-click 函数在 AngularJS 中不使用 onclick 调用?