AngularJS模块依赖 - 澄清?

时间:2014-02-22 14:51:46

标签: javascript angularjs

我一直在调查AngularJs网站上的教程示例(this one

main html is pretty emptyng-viewng-app=phonecatApp除外)

app.js文件包括:

var phonecatApp = angular.module('phonecatApp', [
  'ngRoute',
  'phonecatControllers',
  'phonecatFilters',
  'phonecatServices'
]);

phonecatApp.config(['$routeProvider',...

好的,我们有phonecatApp模块,有许多依赖项。

但后来我看到了controller.js文件(他们为控制器打开了一个新模块)

/*1*/   var phonecatControllers = angular.module('phonecatControllers', []);
/*2*/   
/*3*/   phonecatControllers.controller('PhoneDetailCtrl', ['$scope', '$routeParams', 'Phone',
/*4*/     function($scope, $routeParams, Phone) {
/*5*/       ...
/*6*/       });
/*7*/   
/*8*/     }]);

Phone是一项服务。 (在另一个模块,不同的js文件上)

问题

在第3行中,它如何知道Phone参数是什么?他们没有在第1行添加任何依赖模块!
对于$routeParams,它是如何知道的?他们没有将第1行中的任何依赖项添加到ngRoute

我在这里遗漏了什么吗?

2 个答案:

答案 0 :(得分:7)

来自Pawel Kozlowski'book的引用似乎是相关的:

  

在其中一个应用程序模块中定义的服务是可见的   所有其他模块。换句话说,模块的层次结构不是   影响服务对其他模块的可见性。当AngularJS   bootstraps一个应用程序,它结合了所有定义的服务   将所有模块分成一个应用程序,即全局   命名空间。

答案 1 :(得分:1)

依赖注入默认适用于Angular的每个组件。

这是因为每个组件都在angular对象中定义,因此它可以跟踪所有组件。

您可以查看此http://docs.angularjs.org/guide/di以了解其工作原理。