Angularjs 应用程序/提供商循环依赖关系
我想在启动AngularJs应用程序时使用提供商设置一些配置设置,但我想将应用程序和提供商放在两个单独的文件中 这就是我现在拥有它的方式:Angularjs 应用程序/提供商循环依赖关系,angularjs,provider,Angularjs,Provider,我想在启动AngularJs应用程序时使用提供商设置一些配置设置,但我想将应用程序和提供商放在两个单独的文件中 这就是我现在拥有它的方式: var myApp = angular.module('myApp', []); myApp.config(function(myServiceProvider) { ....etc. 提供者的定义如下: angular.module('myApp').provider('myService', function () { ...etc. 如果我先加载
var myApp = angular.module('myApp', []);
myApp.config(function(myServiceProvider) {
....etc.
提供者的定义如下:
angular.module('myApp').provider('myService', function () {
...etc.
如果我先加载应用程序,则提供商还不在那里;如果我先加载提供商,则应用程序还不在那里。
解决这个问题的最佳方法是什么?您的模块定义包括模块依赖项,而不是服务或提供者 应该是:
var myApp = angular.module('myApp', []);
配置块总是在提供程序初始化后执行。不存在循环依赖性问题
文件1:定义模块
angular.module('myApp', []);
文件2:定义提供者
angular.module('myApp').provider('myService',function() {...});
文件3:定义配置块
angular.module('myApp').config(function(myServiceProvider) { ... });
HTML:
文件的顺序很重要。在第一个文件中:
var myApp = angular.module('myApp', []);
myApp.config(function(myServiceProvider) {
....etc.
在第二个文件中:
myApp.provider('myService', function () {
...etc.
变量myApp是一个全局变量,您可以在网站的任何地方访问它。
你可以看看,这是一个生成器,它创建了你的angularjs应用程序结构,并添加了很多很酷的功能。my bad,但删除它仍然会产生同样的问题,可能是从myApp.config要求注入时开始的。你的模块定义必须有一个空的模块数组作为依赖项。否则,您将尝试检索尚未定义的模块。是的,抱歉,但仍然存在相同的问题。啊,我想我知道问题是什么。模块定义和配置方法调用不能在同一个文件中。提供程序尚未定义。@Maarten:注意:Angular verison
1.3.0-beta.8
及更高版本中的情况发生了变化。从该版本开始,.config()
块在加载服务等后执行,因此外观顺序不起作用。也请看,这只是将提供者添加到应用程序的不同语法,但它并不能解决我的问题
myApp.provider('myService', function () {
...etc.