2017-01-09 64 views
3

我嘗試在創建動態元素時使用ng-click調用函數,但目前尚未成功。這裏是我的代碼當使用追加函數時,ng-click不起作用

$scope.myfunc = function(){ 
    alert("anything") 
} 

var divtoappend=angular.element(document.querySelector('#slist')); 
divtoappend.append("<button class = 'optv' ng-click='myfunc()'>" +mybutton+ "</button>"); 
... 

不引發錯誤並沒有什麼發生在點擊

+5

在將其注入DOM樹之前,使用'$ scope'編譯DOM。像'divtoappend.append($ compile(「」)($ scope));' –

+0

@PankajParkar也表示注入'$編譯服務。 –

+0

謝謝你@PankajParkar你應該發佈這個答案,以便我可以驗證它和其他可能會發現這有幫助 – sam

回答

2

您必須編譯DOM與$compile API,注入DOM樹之前,如下所示。

divtoappend.append($compile("<button class = 'optv' ng-click='myfunc()'>" +mybutton+ "</button>")($scope)); 

通過編譯DOM角會把所有HTML級綁定在$$watchers陣列的$scope,以確保用戶界面是最新的,在每一個消化週期。

+0

背後發佈相同的問題評論和這裏在答案部分背後的原因是什麼? –

+0

@AKA根據OP所要求的評論我做到了..否則我不會那樣做.. :) –

2

您需要編譯動態生成HTML,使其AngularJS的範圍之內。 只是編譯內append方法類似

divtoappend.append($compile("<button class = 'optv' ng-click='myfunc()'>" +mybutton+ "</button>")($scope)); 

在此之前,在你的控制器注入$compile

我創建了一個plunkr看到這個plunkr link

0

您需要編譯你的DOM元素作爲後續使用$編譯

$compile(divtoappent)(scope); 
相關問題