Angular js - 服务和循环注入错误

时间:2014-04-23 18:21:42

标签: javascript angularjs dependency-injection angular-services

为什么我无法注入这样的服务?

service('actionService',function (sessionService) {
 this.doAction = function () {
  return 5;
 }
});
service('sessionService',function (userService) {
 this.get = function {
    if(userService.check()){
    //do other stuffs 
    }
  }

});
service('userService',function (actionService) {
  this.check = function () {
  actionService.doAction();
  if(x = 9){ 
    return true;
  }else{ 
   return false; 
  } 
  }
});

我在控制台中获得"Circular injection error"

现在该如何处理?

这是一个更好的代码:http://pastebin.com/wS32UNCq

1 个答案:

答案 0 :(得分:2)

在拥有actionService实例之前,您需要注入一个sessionService实例。

在拥有sessionService实例之前,需要注入userService实例。

在拥有userService实例之前,需要注入actionService实例。

这是一个鸡或鸡蛋问题...因为Angular使用构造函数注入,它不能实例化服务,直到满足所有依赖项。但依赖关系围成一圈,其中没有一个可以实例化。

要解决此问题,您需要将共享依赖项提取到可以在没有依赖项的情况下实例化的其他服务。