我一直在调查AngularJs网站上的教程示例(this one)
(main html is pretty empty(ng-view
和ng-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
!
我在这里遗漏了什么吗?
答案 0 :(得分:7)
来自Pawel Kozlowski'book的引用似乎是相关的:
在其中一个应用程序模块中定义的服务是可见的 所有其他模块。换句话说,模块的层次结构不是 影响服务对其他模块的可见性。当AngularJS bootstraps一个应用程序,它结合了所有定义的服务 将所有模块分成一个应用程序,即全局 命名空间。
答案 1 :(得分:1)
依赖注入默认适用于Angular的每个组件。
这是因为每个组件都在angular
对象中定义,因此它可以跟踪所有组件。
您可以查看此http://docs.angularjs.org/guide/di以了解其工作原理。