0

为什么我不能注入这样的服务?

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

4

1 回答 1

2

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

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

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

这是先有鸡还是先有蛋的问题……因为 Angular 使用构造函数注入,所以在满足其所有依赖项之前,它无法实例化服务。但是依赖关系绕了一圈,它们都不能被实例化。

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

于 2014-04-23T18:34:45.417 回答