Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问指令的所有控制器_Javascript_Angularjs - Fatal编程技术网

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请参阅我的编辑。您可以通过指令名称要求指令的控制器!