在模块中创建服务声明的顺序是否重要?

时间:2016-06-20 18:16:29

标签: angularjs

嘿,大家只是关于Angular JS服务的结构性问题。

我有一个模块:

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

mod.config(function(){
    // some various config stuff
});

我创建了三个服务,其中一些服务具有依赖性,一些服务具有一对一依赖性。

mod.service('service1', ['service2', function(service2){

}]);

mod.service('service2', ['service1', function(service1){

}]);

mod.service('service3', ['service1, service2', function(service1, service2){

}]);

由于它们都是在初始化模块myApp时被声明的,那么这个结构会被允许吗?

2 个答案:

答案 0 :(得分:2)

如果service1依赖于service2而service2依赖于service1,那么您已经引入了循环依赖关系,并在您的应用程序中获得了代码味道。 AngularJs是基于依赖注入构建的,并且循环依赖性禁用它。在某些情况下,这是一个可接受的解决方案,但在angularjs中,它不是。

解决此问题的一种方法是问问自己,service1和service2应该是一个服务吗?

阅读标记关于圈子依赖关系here的完美答案,以便更好地解释这一点。

答案 1 :(得分:1)

你可以这样做,当然。模块本身应该加载到app.js,此时所包含的所有服务都可以在任何地方注入,包括其他服务。

那就是说,我不是100%肯定你在找什么。以上不起作用吗?