即时添加AngularJS的属性和innerHTML

时间:2014-06-19 13:59:02

标签: javascript angularjs

好吧,我对角度很新,我已经从不同的来源读到它了解它已经足够了, 显然我仍然在努力让它以某种方式发挥作用,

我已经有了简单的htmlpage:

<html>
<body ng-app>
   <div id="content"></div>
</body>
</html>

然后,在我向服务器请求数据之后,我创建了这样的东西:

function updateView($scope){
   $scope.test="Success";
}

window.onload=function(){
    var content = document.getElementById("content");
    var add = document.createElement("div");
    add.innerHTML = "{{test}}";
    content.appendChild(add);
    content.setAttribute("ng-controller", "updateView");
};

我得到的结果是带有文字的html页面:{{test}}

所以我认为它不起作用,

我知道这可能与动态创建内容和ng-controller有关,这可以像许多教程那样以更基本的方式完成,但我需要我指定的方法(添加属性和内容) (测试)在飞行中)因为我将显示我从服务器请求的东西,它可以有不同数量的数据,比如它是否有数组形式的3个数据,“var add = document.createElement(”div“)”将被调用3次,我需要将属性ng-controller附加到每个

有没有我还不知道的工作?

1 个答案:

答案 0 :(得分:1)

为了完成你在Angular中尝试做的事情,你需要使用$ compile服务,你可以阅读更多关于here的信息。这允许您将html附加到dom并将其链接到范围变量。

对于您的具体示例,您可以在window.onload方法中获取$ compile服务,如下所示:

window.onload=function(){
    angular.element("body").injector().invoke(function ($compile) {
        var content = document.getElementById("content");
        var add = document.createElement("div");
        add.innerHTML = "{{test}}";
        content.appendChild(add);
        content.setAttribute("ng-controller", "updateView");
        $compile(template.contents())(scope);
    });
};
相关问题