在require: "^directive1"
中使用directive2
时您可以在链接功能link: function (scope, element, attrs, ctrl) {}
中访问它的变量和功能 - ctrl是指令1的控制器。
如何在ctrl
中使用controller
- 而不是link
func?
答案 0 :(得分:1)
控制器之间是否可以共享任何内容?是的,有:指令可以共享相同的scope
!
您需要在共享的scope
对象上公开控制器。最简单的方法是使用第二个指令的link
函数:
var linkFn = function (scope, element, attrs, ctrl) {
scope.exposedCtrl = ctrl;
};
只要您不使用隔离范围,您就应该能够访问父指令中的$scope.exposedCtrl
。请记住,在调用子指令的链接函数之前,不会初始化exposedCtrl
属性。
答案 1 :(得分:-1)
我为我的问题找到了完美的解决方案:
.controller('myCtrl', ['$element', function($element) {
var parentCtrl = $element.parent().controller('diective1');
}])
来源:https://github.com/angular/angular.js/issues/10998#issuecomment-73308256