2014-02-13 37 views
2

我有一個帶有AngularJS指令的HTML行,我通過自2009年以來使用的一些jQuery控件動態插入。我無法更改此控件。不過,我想開始使用角JS。AngularJS和動態HTML

一格,列得分生成的HTML是:

<div star-rating rating-value="1005" max="5"> </div> 

我想是讓這個網站編譯。

目前AngularJS無法看到這個動態生成的HTML。

我能想到的唯一方法是如果我爲每個jQuery插入調用一個javascript函數(我使用的網格控件可以編譯JavaScript函數)。

fnCompileDynamicHTML('<div star-rating rating-value=23 max=5></div>) 

和功能:

fnCompileDynamicHTML(html) { 
    return $compile(html)($scope) // or something? 
} 

我按照什麼提到here。然而我的申請是抱怨:

App Already Bootstrapped with this Element. 

那麼這不是因爲它是一個新的對象,而是新的內部HTML。

這是我在100環:

evt.row.cells[glbCandidateListColumnIndex.rank].innerHTML = '<div star-rating rating-value="' + rank + '" ></div>'; 
fnCompileDynamicAngularJS(evt.row.cells[glbCandidateListColumnIndex.rank]); 

請幫助。

+0

任何人,請!? – codebased

+0

任何人,請嗎? – codebased

+0

'evt.row.cells [glbCandidateListColumnIndix.rank] .appendChild(fnCompileDynamicAngularJS('

'));'?對'$ compile(html)(scope)'的調用返回一個'$ element',你必須將'append'添加到正確的位置。您可能還需要在返回的$ element上調用'.node()'來獲取DOM元素。 –

回答

0

您應該加載由你的外國庫中的DOM編輯完成後Angular.js,呼籲angular.bootstrap(documented here),或者您也可以手動強制特定DOM節點彙編(更難!!!)

作爲例如:

angular.module('myApp', []).directive('myDirective', function() {}); 
angular.bootstrap(document.body, ['myApp']); 

這應該已經工作了!