javascript - Angular js 将变量从父指令传递到子指令

标签 javascript angularjs

我有两个指令。一位 parent 和一个 child 。我想将一个变量传递给父指令并使其可供多个子指令访问。以下是指令:

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>

子指令似乎没有获取变量。为什么不呢?

最佳答案

首先,“要求”父 Controller 的正确语法是:

require:"^supNavDirective"

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

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

关于javascript - Angular js 将变量从父指令传递到子指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18436179/

相关文章:

javascript - Electron cookies

javascript - 是否可以在 Javascript/AngularJS 中同步并发调用?

javascript - 在 Chrome 扩展中抓取 DOM 值

javascript - 错误 : $injector:modulerr Module Error in angular

javascript - AngularJS 中的全局后退/下一步按钮

javascript - 使用 ng-annotate-loader 和 babel-loader 进行 js 的 webpack 配置

javascript - Angularjs ng-show 表

javascript - Protractor :无法获取中继器元素

javascript - 参数 'cotroller' 不是函数,未定义

javascript - 如何使跨度在单击时出现但在单击另一个链接时消失?