2014-12-23 4 views
0

템플릿에 Modal 지시문의 인스턴스가 포함 된 FilePicker 지시문이있는 경우 FilePicker의 컨트롤러에서 Modal 지시어 컨트롤러의 인스턴스에 대한 참조를 얻으려면 어떻게해야합니까? ?자식 지시자의 컨트롤러에 액세스하는 방법

나는 이것을 할 방법을 찾을 수 없기 때문에 물론 묻는다. 그러나 이것은 지시어 컨트롤러가 지시어와 의사 소통의 기본이되는 것에 대해 들었던 모든 것에 비추어 볼 때 실망 스럽다. $scope을 통한 모든 것.

+1

템플릿 안의 요소를 찾고 컨트롤러()를 호출 할 수 있습니다. –

+0

감사합니다 @WalterBrand, 유일한 방법 인 것 같습니다. 부끄러운 일은 DOM에 액세스하는 것입니다. –

답변

0

템플릿의 인스턴스입니까? 뭐? 템플릿은 단순한 문자열이며 그게 전부입니다. 컨트롤러 정보 : 각도 요소 컨트롤러로 DOM 요소를 관리 할 수 ​​있습니다. 지시어가 DOM 요소에 적용되고 있습니다. 그런 다음 컨트롤러도 사용할 수 있습니다. 지시기 컨트롤러를 간단히 설명하면 다음과 같습니다.

// directive with name parentDirective 
{ 
    link: function() { ... }, 
    restrict: 'A', 
    controller: [ '$scope', function ($scope) { 
     this.sayHello = function() { alert('hello'); } 
     // 'this' references the instance of the directive controller and then can be required by a child 

    }], 
    template: '<div><child-directive/></div>' 

} 

// child directive with the name childDirective 
{ 
    require: '^parentDirective', 
    link: function (scope, $element, attributes, parentDirectiveController) { 
     parentDirectiveController.sayHello(); 
    } 
} 
+0

위의 지시어는 child 지시문에서 부모 지시어의 컨트롤러에 액세스하는 방법을 보여줍니다.이 지시문은 잘 문서화되어 있지만 다른 방향으로는 이동하지 않습니다. 그것은 내가 확신하지 못하는 다른 방향으로가는 방법입니다. –

+1

나는 그것이 좋은 습관이라고 생각하지 않는다. DOM을 통해 DOM 지시어 요소를 검색하고 $ element.scope() 또는 $ element.data()를 사용하여 스코프 또는 데이터를 가져 와서 원하는대로 할 수 있습니다. 물론 모든 작업이 컴파일되고 링크 된 후에 만 ​​수행 할 수 있습니다. –

관련 문제