好吧,我对 Angular 很陌生,我已经从不同的来源阅读了有关它的内容,以便充分理解它, 显然我仍在努力使其以某种方式发挥作用,
我已经有了简单的 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 附加到每一次
是否有我还不知道的解决方法?
最佳答案
为了完成您在 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);
});
};
关于javascript - 动态添加 AngularJS 的属性和innerHTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24308442/