2015-10-13 102 views
0

我想知道如果我可以做一個角的js指令,然後我就可以在運行時角的js重用指令

這裏再次使用它是一個簡單的例子

app.directive('w34Directive',function(){ 
return{ 
    template : "<p>test</p>" 
    } 
}) 

這裏是HTML

<div w34-directive></div> 

,但如果我有執行以下操作的功能在控制器NG-點擊功能按鈕

var elem = document.querySelector('.myContainer'); 
angular.element(elem).append("<div w34-directive></div>"); 

這意味着一個新的DOM使用該指令將被生成,但實際上角度指令在頁面加載時觸發一次,所以當我添加新的DOM時,只需添加一個空的div標籤,而不需要指令的模板這種情況下:

<p>test</p> 

有關如何解決這個問題的任何想法?

+0

什麼你要找的是如何'$ compile'您的指令,一旦它在這一頁。我的問題是你爲什麼試圖在頁面已被編譯之後添加指令*? –

+0

dom代碼不屬於控制器。通常應該使用數據模型而不是dom的標誌,並讓角度管理dom – charlietfl

回答

1

是的,你可以用做:

$compile

例:

var el = $compile("<div w34-directive></div>")($scope); 
angular.element(elem).append(el);