2015-06-28 263 views
3

我正在通过电子书来学习整个MEAN堆栈,并且在使用angular时遇到了一个奇怪的问题。AngularJS依赖注入顺序

具体来说,我添加了角度路由到我的应用程序来呈现模板。起初,我无法完成它的工作,并多次查看代码,寻找我可能犯的错误。最后,我已经为主应用程序模块键入了两个依赖项的顺序,而不是本书所示。

这不起作用

var mainApplicationModule = angular.module(mainApplicationModuleName, ['example', 'ngRoute']); 

这个工作

var mainApplicationModule = angular.module(mainApplicationModuleName, ['ngRoute', 'example']); 

所以我没有一个确切的问题,但我想知道是否有人可以解释为什么这个作品这条路?我一直无法找到关于依赖声明顺序的任何事情。如果它有帮助,我可以发布更多的代码。

+0

这可能是不相关的,但是你的模块名称是一个字符串? – sfletche

+0

是的,是的。你为什么要问? – natedog

回答

2

这来自Brad Dayley关于主题的书。 顺序很重要,因为要注入的模块列表(依赖关系)必须按照“required”的顺序排列。所以如果example模块需要ngRoute,那么ngRoute必须在example之前。

的angular.module()方法使用以下语法:

angular.module(name, [requires],[configFn])

name参数是在其下模块在喷射器服务注册的名称。 requires参数是添加到注入器服务以供该模块使用的模块名称的数组。

此解释的确请求回答关于循环模块引用在更复杂情况下的可能性。这里是David M. Karr SO Answer Link的一些灯光。

+0

谢谢你,非常简洁,清除它! – natedog

+0

我喜欢你的问题......教程不会扩展“angular.module()”的“requires”参数中模块的“顺序”。 – Nirmal