각도 이외의 돔에 추가 할 때 각도 명령을 렌더링하는 방법은 무엇입니까?각도 이외의 돔에 추가 할 때 각도 지시문을 렌더링하는 방법은 무엇입니까?
나는 천천히 기존 코드베이스에 각도를 도입하는 중입니다. dom에 일련의 행이있는 테이블이 있습니다. 각 행은 지시에 의해 제어되는 회 전자 소자들을 포함
<tr>
<td>stuff</td>
<td><div spinner></div></td>
<tr>
joyableApp.directive('spinner', [function() {
return {
templateUrl: 'spinner.html',
}
}]);
? 지금 <div spinner>
페이지로드에 DOM에있을 때, 회 전자 지시자가 올바르게 작동하고 spinner.html
템플릿이 적절히 그 DIV 내부 렌더링 .
그러나이 페이지에는 테이블에 행을 추가하는 버튼이 있습니다. 있는 HTML이 /get_new_row_content
에서 반환
$(“#new-row-button”).click(function(e) {
$.get(“/get_new_row_content”, function(data) {
$(“#table tbody”).append(data);
});
});
위에 표시된 거의 바로 HTML, 그리고 <div spinner>
이 포함되어 그 버튼을 지배하는 쿼리입니다. Dom 검사는 회 전자 요소가 페이지에 추가되었는지 확인합니다. 그러나 spinner.html
템플릿이 렌더링되지 않습니다. 이 새로운 행이 추가되면 spinner 지시문이 트리거되지 않습니다.
이 jquery 코드는 컨트롤러, 서비스, 팩토리 또는 기타 다른 것들은 아닙니다.
그렇다면 각도 지정을 사용하여 새 행을 가져 오는 방법은 무엇입니까?
대답은 '행 추가'버튼을 포함하여 전체 페이지가 각도로 제어되도록하는 것으로 생각되지만 그럴 시간이 없습니다. 각도와 기존 코드 사이에 단기간의 다리가 필요합니다.
TLDR : 동적으로 페이지의 외곽에서 dom 요소를 트리거하는 각도 지시문을 얻으려면 어떻게해야합니까? 할
$(“#new-row-button”).click(function(e) {
$.get(“/get_new_row_content”, function(data) {
var $injector = angular.injector(['ng','any other needed modules']);
$injector.invoke(function($rootScope,$compile){
$(“#table tbody”).append($compile(data)($rootScope));
});
});
});
$ compile ('your html') (범위)을 사용하여 테이블에 추가해야합니다. 내 생각에 –
각도 이외의'$ compile '에 대한 액세스 권한을 얻는 방법 (즉, jquery ajax 콜백)? – Fishtoaster
var $ injector = angular.injector ([ 'ng']); $ injector.invoke (function ($ rootScope, $ compile) { // 여기 컴파일하고 삽입하십시오. }); –