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

원시 DOM에 jQuery를 추가하면 각도 지시문을 컴파일하게됩니다. $compile 서비스를 사용해야하는데, $compile이 먼저 DOM이 & 인 DOM 트리에 DOM을 삽입해야합니다. $compile은 DOM을 요청하는 API 함수 (함수를 반환)이므로 $scope을 전달하여 해당 함수를 다시 호출하여 context에 대해 평가할 수 있습니다. $compile API 메서드는 DOM & 업데이트 bindings의 모든 지시문을 컴파일합니다.

아래의 경우 $scope 안에 값을 사용할 수 없으면 범위 변수에 저장하거나 문자열 연결로 전달할 수 있습니다.

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

thnx .. 저를위한 그것의 일 – Anil

+0

@Anil 받아 들일 수 있고 응답을 upvote 수 :) 감사 –

0

jQuery를 사용하여 추가하는 대신 $compile 서비스를 사용하여 dom에 바인드하십시오.

{{ domeEle }} 

그리고 컨트롤러의

이 같은 editrc 함수를 정의 :

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

과 같은 HTML 통화에서이 같이

$scope.editrc = function(val){ 

} 
0

당신은 HTML의 바인딩하기 위해 ng-bind-html 지시어를 사용할 수 있습니다 동적으로 템플릿에. 그러나 $compile(<html>)을 수행하여 $ compile을 사용하여 html을 컴파일해야합니다. 컴파일 된 html에 언급 된 표현식은 컨트롤러에서 제공 한 정의를 호출 할 수 있습니다.

관련 문제