列出注入的依赖项

时间:2015-06-10 16:37:37

标签: javascript angularjs angularjs-controller angularjs-module

有没有办法知道哪些依赖项注入了我的Angular模块?

angular.module('myModule', [
  'ui.bootstrap'
])
.controller('myController', [function () {
  // var dependencies = Magic.dependencies;
  // console.log(dependencies);
}]);

2 个答案:

答案 0 :(得分:2)

在你的控制器中,如果你注入$window,你可以挖掘依赖关系,特别是你的模块上有.requires。为此,您可以将module声明为全局var,以便我们在$window上找到它,在这种情况下,我们可以将其称为app } - 或 - 您可以绕过全局和$window并直接调用angular.module('myModule').requires

  • 我还添加了ngRoute来证明可以发现的依赖项数组。


var app = angular.module('myModule',
[
    'ui.bootstrap',
    'ngRoute'
]).controller('ctrl', ['$scope', '$window', function($scope, $window) {
    console.log($window.app.requires) // ["ui.bootstrap", "ngRoute"]
    console.log(angular.module('myModule').requires) // without global - $window not needed
}]);

JSFiddle Link - 工作示例

注意 - 如果利用全局变量,您只需简单地调用windowwindow.app.requires - 而无需注入$window。不过,请参阅AngularJS $window docs了解为何首选$window

答案 1 :(得分:1)

@salniro's answer上构建,您不需要全局变量,也不需要$window

依赖项列在angular.Module.requires属性中:

angular.module('myModule', [
    'ui.bootstrap',
    'ngRoute'
])
.controller('ctrl', function() {
    var app = angular.module('myModule');
    console.log(app.requires); // ["ui.bootstrap", "ngRoute"]
});

http://jsfiddle.net/8vtf6gar/1/