angularjs – Angular – 在子指令的控制器中获取父指令的控制器(不是链接函数)

前端之家收集整理的这篇文章主要介绍了angularjs – Angular – 在子指令的控制器中获取父指令的控制器(不是链接函数)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道如何在子指令的link函数获取parent的指令控制器.
但是,我宁愿避免使用链接函数(和$scope all-together)并将所有代码都放在指令的控制器函数下.
angular.directive('parent',function(){
    return {
        templateUrl: '/parent.html',scope: true,bindToController: true,controllerAs: 'parentCtrl',controller: function(){
            this.coolFunction = function(){
                console.log('cool');
            }
        }
    }
});

angular.directive('child',function(){
    return {
        templateUrl: '/child.html',require: '^parent',controllerAs: 'childCtrl',controller: function() {
            // I want to run coolFunction here.
            // How do I do it?
        }
    }
});

任何帮助表示赞赏!

您可以将’$element’注入控制器并访问父控制器,如 –
controller: ($element) ->
    var parentCtrl = $element.parent().controller('parent');
    parentCtrl.coolFunction();
    //..........
    //..........

这可能不是访问“任何”父控制器最透明的方式,因为它需要指令的特定名称,它是jqlite而不是纯Angular.

发现这个帖子很有用 – How to access parent directive’s controller by requiring it recursively?

编辑:感谢@Dmitry弄清楚角度不需要’.parent’来获得控制器.更新的代码

controller: ($element) ->
    var parentCtrl = $element.controller('parent');
    parentCtrl.coolFunction();
    //..........

猜你在找的Angularjs相关文章