Javascript 访问指令的所有控制器
我有一个指令,它需要两个控制器,并用Javascript 访问指令的所有控制器,javascript,angularjs,Javascript,Angularjs,我有一个指令,它需要两个控制器,并用controller属性treenodeconcontroller指定了另一个控制器 .directive('uiTreeNode', function () { return { require: ['^uiTreeNodes', '^uiTree'], controller: 'TreeNodeController', link: function (scope, element, attrs, controll
controller
属性treenodeconcontroller
指定了另一个控制器
.directive('uiTreeNode', function () {
return {
require: ['^uiTreeNodes', '^uiTree'],
controller: 'TreeNodeController',
link: function (scope, element, attrs, controllers) { ... }
};
});
我的问题是如何从链接
方法访问treenodeconcontroller
当我记录
controllers
参数时,它是一个仅包含uiTreeNodes
和uiTree
控制器的数组。如果您需要访问指令的控制器,您也必须需要它。在require数组中使用指令名(而不是控制器名)
.directive('uiTreeNode', function () {
return {
require: ['^uiTreeNodes', '^uiTree', 'uiTreeNode'],
controller: 'TreeNodeController',
link: function (scope, element, attrs, controllers) {
var treeNodeCtrl = controllers[2];
}
};
});
如果您使用的是controllerAs
语法,则控制器也在范围内:
.directive('uiTreeNode', function () {
return {
require: ['^uiTreeNodes', '^uiTree'],
controller: 'TreeNodeController',
controllerAs: 'view',
link: function (scope, element, attrs, controllers) {
var treeNodeCtrl = scope.view;
}
};
在本例中,我没有使用
controllerAs
语法。关于如何在不使用此语法的情况下访问控制器,您有什么想法吗?@Voles请参阅我的编辑。您可以通过指令名称要求指令的控制器!