2017-07-08 2 views
2

Ich versuche, das $ window-Objekt in einem http-Interceptor zu verwenden, so dass ich auf die localStorage verweisen kann.

Das Problem ist, dass, wenn ich die folgende Zeile entferne, meine Web-App funktioniert. Aber wenn ich es hinzufüge, wird keine Seite geladen, nur ein weißer Bildschirm, aber es gibt auch keine Fehler.

let {$window} = this; 

Mein Hauptmodul Config:

$httpProvider.interceptors.push('authInterceptor'); 

Mein authInterceptor Serviceklasse:

export class authInterceptor { 
    constructor($window) { 
    this.$window = $window; 
    } 

    request(config) { 
    let {$window} = this; 

    return config; 
    } 

    responseError(response) { 
    return response; 
    } 

} 
authInterceptor.$inject = ['$window']; 
+0

Dann verwenden Sie nicht:

Wie alle anderen Klassenmethoden, die als Callbacks verwendet werden, sollten diese hier zu richtigen Kontext, um sie zu halten und injiziert Dienste nutzen zu können, gebunden sein? Benutze einfach dieses. $ Window? Oder benutze einfach w = this. $ Window? Ich vermute, dass Ihr Transpiler diese Syntax nicht unterstützt. –

+0

Das funktioniert auch nicht, und diese Syntax funktioniert in meinen anderen Modulen. – Soundwave

+0

Loggin das $ window-Objekt im Konstruktor gibt ein gültiges Fensterobjekt btw .. hmm – Soundwave

Antwort

2

Bedenkt man, dass ES6 vom Browser unterstützt wird (und es unterstützt, da Interceptor Service ist eine Klasse, die wahrscheinlich transpiliert wird), die einzige Möglichkeit, wenn let {$window} = this kann das Problem verursachen, dass this keine Klasseninstanz oder sogar ein Objekt ist.

Interceptor-Funktionen sind Funktionen, die als Callbacks verwendet werden, und pushed to the stack. Dies bedeutet, dass thisundefined im strikten Modus in ihnen sein wird.

es
constructor($window) { 
    this.$window = $window; 
    this.request = this.request.bind(this); 
    this.responseError = this.responseError.bind(this); 
    } 
+0

Danke! Das war genau das, wonach ich suchte. – Soundwave

+0

Gern geschehen. – estus

Verwandte Themen