应用/提供商循环依赖

时间:2014-07-02 07:48:05

标签: angularjs provider

我想在启动AngularJs应用程序时使用提供程序设置一些配置设置,但我希望将应用程序和提供程序放在2个单独的文件中。

这就是我现在的方式:

var myApp = angular.module('myApp', []);

myApp.config(function(myServiceProvider) {
....etc.

提供者的定义如下:

angular.module('myApp').provider('myService', function () {
...etc.

如果我首先加载应用程序,那么提供程序还没有,如果我首先加载提供程序,那么应用程序还没有。 解决这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

您的模块定义包括模块依赖项 - 而不是服务或提供程序。

应该是:

var myApp = angular.module('myApp', []);

配置块始终在初始化提供程序后执行。没有循环依赖问题。

文件1:定义模块

angular.module('myApp', []);

文件2:定义提供者

angular.module('myApp').provider('myService',function() {...});

文件3:定义配置块

angular.module('myApp').config(function(myServiceProvider) { ... });

HTML:

<script src="/angular.js"></script>
<script src="/file1.js"></script>
<script src="/file2.js"></script>
<script src="/file3.js"></script>

文件顺序很重要。

答案 1 :(得分:1)

在你的第一个档案中:

var myApp = angular.module('myApp', []);

myApp.config(function(myServiceProvider) {
....etc.

并在您的第二个文件中:

myApp.provider('myService', function () {
...etc.

变量myApp是一个全局变量,您可以在网站的任何位置访问它。 你可以看看Yeoman project,它是一个生成你的angularjs应用程序结构并添加很多很酷功能的生成器。