您可以获得每个模块的提供者列表(即服务/指令/控制器/工厂/等),尽管该列表有点神秘。
假设您有以下内容:
var mod = angular.module('myModule', []);
mod.factory('fact1', function($dependency1, $dependency2){ ... });
mod.service('serv1', function($dependency3, $dependency4){ ... });
mod.controller('ctrl1', function($dependency2, $dependency3){ ... });
mod.factory('fact2', function($dependency1, $dependency4){ ... });
...
然后mod
变量将包含一个名为的属性mod._invokeQueue
它将包含属于该模块的所有提供者的数组。这_invokeQueue
看起来像这样:
[
['$provide', 'factory', Arguments['fact1', ['$dependency1', '$dependency2', function(){}],
['$provide', 'service', Arguments['serv1', ['$dependency3', '$dependency4', function(){}],
['$provide', 'controller', Arguments['ctrl1', ['$dependency2', '$dependency3', function(){}],
['$provide', 'factory', Arguments['fact2', ['$dependency1', '$dependency4', function(){}]
...
]
所以你可以搜索一下mod._invokeQueue
对于它包含的每个提供者。
但这仅包含该特定模块的提供程序列表。如果您想获取所有依赖模块的列表,则需要循环遍历mod.requires
array.
如果模块具有模块级依赖关系,如下所示:
var mod = angular.module('myModule', ['otherModule1','otherModule2']);
然后mod
对象也会有一个mod.requires
包含这些模块依赖项名称的数组,如下所示:
angular.forEach(mod.requires, function(requiredModuleName){
// first get a reference to the required module by calling angular.module()
var requiredMod = angular.module(requiredModuleName);
// requiredMod will have its own ._invokeQueue
// requiredMod._invokeQueue will look like the _invokeQueue from above
...
// do something with the additional providers in _invokeQueue
});