2

我有两个指令。一个父母和一个孩子。我想将一个变量传递给父指令并让多个孩子可以访问它。以下是指令:

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

1 回答 1

4

首先,“要求”父控制器的正确语法是:

require:"^supNavDirective"

其次,您必须将returnNavTree方法添加到控制器实例本身(而不是$scope)以从子指令访问它,如下所示:

...
controller: function ($scope, $element) {
  this.returnNavTree = function(){
    return $scope.navtree
  }
},
...
于 2013-08-26T03:50:53.123 回答