2014-06-19 21 views
1

好吧,我是非常新的角度,我已經從不同的來源已經瞭解它,以瞭解它很好, 顯然我仍然努力使它以某種方式工作,在動態添加AngularJS的屬性和innerHTML

我已經有簡單的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頁面:{{測試}}

,所以我認爲它不工作,

我知道這可能是與創建內容和ng控制器,這可以用許多教程所做的更基本的方式完成,但我需要我指定的方法(動態添加屬性和內容(測試)),因爲我將顯示我從服務器可以有不同數量的數據,比如說它有3個數據的數組形式,「var add = document.createElement(」div「)」將被調用3次,我將需要附加屬性ng-controller到他們每個人

有沒有我還不知道的工作?

+0

你或許應該使用'NG-repeat'遍歷所有的數據從服務器返回 – noj

+0

嘗試過,問題在於將「{{}}」添加到innerHTML中,它不鏈接 –

+0

您從服務器獲得哪些數據結構?你不應該在onload函數中做任何與角相關的事情 – noj

回答

1

爲了完成您在Angular中要做的事情,您需要使用$ compile服務,您可以閱讀更多關於here的信息。這允許您將html附加到dom並將其鏈接到您的作用域變量。

爲了您的具體的例子,你可以得到$像這樣在window.onload方法編譯服務:

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); 
    }); 
}; 
+0

這個鏈接理論上可以回答這個問題,但[它會更可取](http://meta.stackoverflow.com/q/ 8259)在這裏包括答案的重要部分,並提供參考鏈接。 – JJJ

+0

我正在努力:)我會補充一點,不用擔心 – MDiesel