您可以获取每个模块的提供者列表(即服务/指令/控制器/工厂/等),尽管该列表是一种含糊不清的形式。
说您有以下几点:
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数组。
如果模块具有模块级别的依赖性,则如下所示:
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});希望有帮助。



