在控制器中使用所需的控制器 - 不是链接

时间:2015-02-06 17:36:47

标签: angularjs

require: "^directive1"中使用directive2时您可以在链接功能link: function (scope, element, attrs, ctrl) {}中访问它的变量和功能 - ctrl是指令1的控制器。 如何在ctrl中使用controller - 而不是link func?

2 个答案:

答案 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