2013-08-26 4 views
2

두 개의 지시문이 있습니다. 부모와 자식. 부모 지시문에 변수를 전달하고 여러 자식이 액세스 할 수있게하려고합니다. 여기 지침은 다음과 같습니다부모 지시문에서 자식 지시문에 변수를 전달하는 각도 js

directives.directive('supNavDirective', function() { 
    return { 
     restrict: "E", //declare by element 
     replace: true, 
     scope: { 
      navtree: '=' 
     }, 
     controller: function ($scope, $element) { 
      $scope.returnNavTree=function(){ 
       return $scope.navtree 
      } 
     }, 
     link: function (scope, element, attrs) { 
     } 
    } 
}) 


directives.directive('collection', function() { 
    return { 
     require:"supNavDirective", 
     restrict: "E", //declare by element 
     link: function (scope, element, attrs,superDir) { 
     scope.collection = superDir.returnNavTree() 
     }, 
     template: "<ul class=\"nav nav-list tree\"><member ng-repeat=\"member in collection\" member=\"member\"></member></ul>" 
    } 
}) 

다음은 HTML입니다 :

<superNavDirective collection navtree="analyticsNavTree"></superNavDirective> 

아이 지시어는 변수를 얻을 나타나지 않습니다. 왜 안돼?

답변

4

첫째, 올바른 구문은 "요구"하는 부모 컨트롤러는 다음과 같습니다

require:"^supNavDirective" 

둘째, 당신은 자식 지침에서 액세스하는 (대신 $scope의) 컨트롤러 인스턴스 자체에 returnNavTree 방법을 추가해야합니다, 이렇게 :

... 
controller: function ($scope, $element) { 
    this.returnNavTree = function(){ 
    return $scope.navtree 
    } 
}, 
... 
+0

감사합니다. 귀하의 대답은 문서와 일치합니다. 나는 각도에 익숙하지 않고 약간 상실감을 느낍니다. 내 예제에서 자식 지시문이 내 예제에서 부모 메시지를 렌더링하지 못하는 이유를 이해할 수 없습니다. 여기 내가 달성하려고하는 것을 보여주는 플 런커가 있습니다. http://plnkr.co/edit/9bzdrfuurTYYFJsxVKgG – user648869

+0

안녕하세요, 도움이 되니 기쁩니다. 새로운 호에는 적절한 제목 및 설명을 사용하여 새 질문을 추가하는 것이 좋습니다. –

관련 문제