Javascript 列出AngularJS模块中声明的指令/控制器
有没有办法列出为给定角度模块定义的所有指令和控制器?例如,假设我在“main”模块中定义了三个控制器(即angular.module('main').controller('MainCtrl',function(){…})。有没有办法获得这三个控制器的列表?嗯,我认为这很难,也不是一件好事,但是:Javascript 列出AngularJS模块中声明的指令/控制器,javascript,angularjs,Javascript,Angularjs,有没有办法列出为给定角度模块定义的所有指令和控制器?例如,假设我在“main”模块中定义了三个控制器(即angular.module('main').controller('MainCtrl',function(){…})。有没有办法获得这三个控制器的列表?嗯,我认为这很难,也不是一件好事,但是: var app = angular.module('MyApp', []); console.log(app._invokeQueue[0][2][1]); _invokeQueue是一个数组,如
var app = angular.module('MyApp', []);
console.log(app._invokeQueue[0][2][1]);
_invokeQueue是一个数组,如果您对每个条目执行该操作,并获得[0][2][1],您将在模块中看到每个提供程序的名称
如果你单独使用_invokeQueue,你会看到很多东西,你会喜欢下面的提供者名称,但也喜欢他的类型(指令、控制器等等)
但是你觉得这是一件棘手的事情,不是一件好事,一个非常糟糕的练习,但无论如何,这真的很有趣
不要在生产中使用它!当然,你可以实现一个定制服务,每个控制器都会对这个服务说:我是……然后你可以调用这个服务。在变量用uglifyJS破坏我的项目后,这在识别依赖注入问题方面非常有用。谢谢!
angular.module('myApp')[''u invokeQueue'](function(value){console.log(value[2][1])}
你可以看到DI注释的用法,或者没有:如果你使用value[2][0]
你实际上得到了一个可注入名称的列表angular.module('qirt')[''u invokeQueue'].forEach(function(value){console.log(value[2][0])