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(); //.......... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |