2013-08-26 109 views
2

我有两个指令。父母和孩子。我想将一个变量传递给父指令,并让它可以被多个孩子访问。这里有指示:Angular 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" 

其次,你必须添加returnNavTree方法来控制实例本身(而不是$scope)从子指令访问它,像这样:

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

感谢您回答这个问题。你的回答与文件一致。我是新的角度和感觉有点失落。我不明白为什么我的示例中的子指令无法在我的示例中呈现父消息。这里是一个显示我正在努力实现的活动:http://plnkr.co/edit/9bzdrfuurTYYFJsxVKgG – user648869

+0

嗨,很高兴它有帮助。对于新的问题,我建议你添加一个新的问题,而不是正确的标题和描述。 –

相关问题