在AngularJS模块中列出声明的指令/控制器

Vip*_*ley 20 javascript angularjs

有没有办法列出为给定角度模块定义的所有指令和控制器?例如,假设我在'main'模块中定义了三个控制器(即angular.module('main').controller('MainCtrl',function(){...}).是否有办法获取列表那三个控制器?

Tho*_*ons 28

嗯真的很难,我认为不是一件好事,但是:

var app = angular.module('MyApp', []);

console.log(app._invokeQueue[0][2][1]);
Run Code Online (Sandbox Code Playgroud)

_invokeQueue是一个数组,如果你为每个条目获取[0] [2] [1],你将看到模块中每个提供者的名称.

如果你单独使用_invokeQueue,你会看到许多你喜欢的提供者名称,如下所示,但他的类型也是如此(指令,控制器......);

但是你觉得这是一个棘手的事情并不是一件好事,一个非常糟糕的做法,但无论如何真的很有趣.

不要在生产中使用它!

  • 如果你使用`values [2] [0]`你实际得到一个注入名称列表`angular.module('qirt')['_ invokeQueue'].forEach(function(value){console.log(value [2] [0])})` (6认同)
  • 在使用uglifyJS变量修改项目后,这对于识别依赖注入问题非常有用.谢谢!`angular.module('myApp')['_ invokeQueue'].forEach(function(value){console.log(value [2] [1])})`你可以看到DI Annotation的用法,或者没有: d (3认同)