1
ng-controller가있는 DOM 요소에 컨트롤러를 추가하면 그 결과 컨트롤러 인스턴스는 어디에 저장됩니까?컨트롤러 인스턴스는 어디에 저장되어 있습니까?
DOM 요소의 속성으로 추가 되었습니까?
ng-controller가있는 DOM 요소에 컨트롤러를 추가하면 그 결과 컨트롤러 인스턴스는 어디에 저장됩니까?컨트롤러 인스턴스는 어디에 저장되어 있습니까?
DOM 요소의 속성으로 추가 되었습니까?
예 그들은 DOM 요소에 저장됩니다. AngularJS는 the element API (aka JqLite)이라는 data()
방법을 사용하여 컨트롤러를 저장합니다.
나는 an example on JSFiddle을 만들었습니다.
myApp.directive('myDirective', function() {
return {
link: function(scope,element) {
scope.name = element.data('$ngControllerController').test();
}
}
});
function MyCtrl($scope) {
this.test = function() {
return "world";
}
}
그리고 그래, 당신은 또한
angular.element('...').controller()
에 액세스 할 수 있습니다하지만 당신은이에 대한 Batarang 필요하지 않습니다. 이 부분은 the element API입니다. 이는 액세스를 얻는 기본 방법입니다 (또는 require
속성을 사용하여 지시문을 만들 수 있습니다). 당신이
element.data('$scope')
확인을 통해 액세스를 얻을 수 있도록
BTW, 범위도, 이런 식으로 저장되어, 내가 대신 그것을 위해 당신의 말을합니다. ;) –
STEVER의 코드 스 니펫은 또한 이것을 제안합니다. 그것을 작동시키기 위해서 그가 작성한 것과 일관성을 유지하려면 각도를 반환하기 전에 DOM 객체에 컨트롤러 참조를 추가해야합니다. –