3

Ich habe folgende zirkuläre Abhängigkeit:AngularJS zirkuläre Abhängigkeit für Interceptor

  $http 
      / \ 
     / \ 
     /  \ 
     /  \ 
LoginManager------Interceptor 
(service)   (factory) 

Diese zirkuläre Abhängigkeit entstand erst, nachdem ich den Code für Interceptor hinzugefügt.

Interceptor wird die Abmeldefunktion in LoginManager aufrufen, falls eine bestimmte response abgefangen wird.

Von dem, was ich sehe, einzige Lösung ist, um Abfangjäger Code innerhalb des LoginManager Dienst als anonymous factory

Gibt es eine bessere Art und Weise zu bewegen?

+0

können Sie Ihren 'Interceptor'- und' LoginManager'-Code posten? – iulian

+0

Mögliches Duplikat von [AngularJS: Injizierender Dienst in einen HTTP-Interzeptor (zirkuläre Abhängigkeit)] (http://stackoverflow.com/questions/20647483/angularjs-injecting-service-into-a-http-interceptoror-circular-dependency) –

Antwort

5

Sie können die zyklische Abhängigkeit umgehen, indem Sie den Dienst injector verwenden, um eine Instanz von LoginManager zur Laufzeit zu erhalten.

var loginManager = $injector.get('LoginManager'); 

So stellen Sie sicher, dass Sie diesen Code in eines des Verfahren des Abfangjäger verwenden (z responseError) und nicht direkt in Ihrem Interceptor Erstellungscode.

+0

Die Verwendung von $ injector hat keinen Einfluss auf die zirkuläre Abhängigkeit. –

+0

Haben Sie 'LoginManager' aus der Abhängigkeitsliste von' Interceptor' entfernt? – bumpy

+0

ja, ich tat natürlich –

Verwandte Themen