AngularJs拦截器的循环依赖

Ish*_*are 3 circular-dependency angularjs angular-http-interceptors

我有以下循环依赖:

            $http
            /   \
           /     \
          /       \
         /         \
LoginManager------Interceptor
 (service)         (factory)
Run Code Online (Sandbox Code Playgroud)

这个循环依赖只在我添加了Interceptor的代码后才出现.

InterceptorLoginManager如果某个response被截获,将调用注销功能.

从我看到的,唯一的解决方案是将拦截器代码移动到LoginManager服务中anonymous factory

有没有更好的方法?

bum*_*mpy 5

您可以通过使用injector服务LoginManager在运行时获取实例来避免循环依赖.

var loginManager = $injector.get('LoginManager');
Run Code Online (Sandbox Code Playgroud)

只需确保在拦截器的某个方法(例如responseError)中使用此代码,而不是直接在拦截器创建代码中使用.