【发布时间】:2014-02-22 14:51:46
【问题描述】:
我一直在研究 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!
我在这里遗漏了什么吗?
【问题讨论】:
-
Phone的声明是什么样的?该服务是否注册到phoncatControllers模块?如果不是,那看起来确实很奇怪。 -
好的,我认为这个例子中的假设是
phonecatControllers将始终注册为phonecatServices的依赖项。在创建独立模块以供重用时,这不是一个很好的假设。因为,应用程序中只有一个$injector,所以这是可行的,但我不会说这是拆分模块的好方法。 -
@DavinTryon 所以,如果它是主模块中的依赖项,我可以使用每个模块参数吗?
-
我认为 Angular 应用程序有一个single $injector service,这意味着所有依赖模块都将它们的依赖项放在同一个注入器中。这意味着如果 A 依赖于 B 和 C,那么一旦 A 强制加载所有组件,B 就可以使用相同的注入器服务使用 C 中的组件。
标签: javascript angularjs