加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – Angular – 在子指令的控制器中获取父指令的控制器

发布时间:2020-12-17 08:46:06 所属栏目:安全 来源:网络整理
导读:我知道如何在子指令的link函数中获取parent的指令控制器. 但是,我宁愿避免使用链接函数(和$scope all-together)并将所有代码都放在指令的控制器函数下. angular.directive('parent',function(){ return { templateUrl: '/parent.html',scope: true,bindToCon
我知道如何在子指令的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();
    //..........

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读