1
$scope.showtbleoption = function(id) 
{ 
    console.log(id); 
    $("#showoption").empty(); 
    $("#showoption").append('<button class="btn btn-info" ng-click="editrc(id)">'); 
}; 

如何在angularjs控制器中調用editrc()函數?如何調用附加在div中的angularjs函數

+0

在控制器內使用範圍變量創建函數。 $ scope.editrc = function(id){}; –

回答

3

用jQuery附加原始DOM會使角度指令編譯。您必須使用$compile服務,通過該服務您將$compile DOM首先將& DOM注入到DOM樹中。 $compile是請求DOM的API函數(返回函數),然後您可以通過傳遞$scope來針對特定的context再次調用該函數。 $compile API方法將負責編譯DOM &更新bindings上的所有指令。

在以下情況下,id值直接在$scope內部不可用,您可以將其存儲在範圍變量中或通過字符串連接傳遞。

var compiledDom=$compile('<button class="btn btn-info" ng-click="editrc('+id+')">')($scope); 
$("#showoption").append(compiledDom); 
+0

thnx ..它爲我工作 – Anil

+0

@你可以接受和upvote答案,謝謝:) –

0

代替使用jQuery進行追加,請使用$compile服務將其綁定到dom。就像這樣:

$scope.domEle = $compile('<button class="btn btn-info" ng-click="editrc(id)">') 

,並在HTML調用是這樣的:

{{ domeEle }} 

並在控制器定義editrc功能是這樣的:

$scope.editrc = function(val){ 

} 
0

可以使用ng-bind-html指令綁定在html的動態地添加到模板。然而,你將不得不使用$ compile來編譯html,通過做$compile(<html>)。編譯後的html中提到的任何表達式都可以調用您在控制器中提供的定義。