Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript myHttpInterceptor工厂原因“;找到循环依赖项:factory1<;-$http<;-工厂2“;_Javascript_Angularjs - Fatal编程技术网

Javascript myHttpInterceptor工厂原因“;找到循环依赖项:factory1<;-$http<;-工厂2“;

Javascript myHttpInterceptor工厂原因“;找到循环依赖项:factory1<;-$http<;-工厂2“;,javascript,angularjs,Javascript,Angularjs,我有两个工厂:auth_service.js和user_service.js 我正在努力实现的目标: user_service.js 它将像一个会话管理器,它将存储用户数据信息,以便在整个应用程序中可用。此外,当应用程序第一次运行时,它会向服务器发出ajax请求,以检查是否有登录的用户,尽管我认为应用程序只在索引页上这样做。(那将是另一个问题) auth_Service.js 这将负责某种用户操作的封装,如登录、注销和isLoggedIn 这是一个带有: 虽然在这个地方我只得到 找到循环依赖项:

我有两个工厂:auth_service.jsuser_service.js

我正在努力实现的目标:

user_service.js 它将像一个会话管理器,它将存储用户数据信息,以便在整个应用程序中可用。此外,当应用程序第一次运行时,它会向服务器发出ajax请求,以检查是否有登录的用户,尽管我认为应用程序只在索引页上这样做。(那将是另一个问题)

auth_Service.js 这将负责某种用户操作的封装,如登录、注销和isLoggedIn

这是一个带有:

虽然在这个地方我只得到


找到循环依赖项:$http首先,
responseinterceptor
已弃用。我强烈建议使用
拦截器
。他们甚至更容易使用,伊姆霍

你的假设是正确的。克服这一问题的一种可能方法是使用事件

在拦截器中注入
$rootScope
,而不是
UserService
。然后,不调用服务的方法,而是发出一个事件,例如,
$rootScope.emit('unsetUser')

UserService
中,您将侦听该事件:
$rootScope.on('unsetUser',function(){

这样一来,
$http
服务就不知道
UserService
,但它们仍然可以通信


另一个解决方案是创建某种中间服务,这两种服务都被注入。
UserService
然后将自己注册为观察者,拦截器可以调用一个方法,该方法反过来通知
UserService

,您应该以一种表示整个问题的方式构造plunker,重现他指出了您遇到的错误,不仅仅是因为显示了代码片段。我试图创建另一个plunker()代表您的案例,如果我做得对,您的代码没有错误。因此,也许您没有向我们展示一些重要的部分。从您提到的错误消息来看,$http服务似乎取决于您的UserService,这非常奇怪,并且没有显示在您发布的代码中。我正在使用所有代码创建一个plunker,问题是如何创建我可以模拟对我的laravel4本地主机的$http请求吗?你可以使用
angular mock
来模拟$httpBackend。这是一种非常方便的开发技术,称为“BackEnd development”。例如,请看这个-我用更多信息更新了我的问题