2016-07-26 9 views
0

Ich habe eine Fabrik, die einen http-Aufruf und in der Fehlerrückruf ich möchte eine Eigenschaft einen Wert, z. B. this.password = null aber this.password zeigt nicht auf das Passwort. password: this.passwordIn AngularJS, wie Service-Eigenschaft von Callback in Service selbst zu ändern

Der Umfang der Eigenschaft sollte anders richtig sein Passwort:

Auf der anderen Seite, wenn ich die POST tun werden die Daten in Ordnung geschickt? Oder ich vermisse etwas anderes?

Ich könnte alle Eigenschaften und Methoden zu einer Var und dann zurück, aber ich würde eher Methode oben. Ich meine:

var myService = { 
    // my property and methods... 
} 

errorCallBack = function(){ 
    myService.password = null; 
} 

return myService; 

Antwort

2

Sie haben ein Scoping-Problem. Sollte leicht genug sein, um so etwas zu tun. Wie immer, ungetestet, aber es scheint, als würde es funktionieren.

.factory('LogInService', function($http) { 

    return { 
    username: null, 
    password: null, 
    logIn: function() { 
     var svc = this; //<---- 
     return $http({ 
     method: 'POST', 
     url: 'http://my-domain/api/signin', 
     data: { 
      username: svc.username, //<--- 
      password: svc.password //<--- 
     } 
     }) 
     .then(
     function(success){ 

     }, 
     function(err){ 
      // reset password field 
      svc.password = null; //<---- 
     } 
    ); 
    } 
    } 
}); 
+0

Ich habe versucht mit 'var_this = this;' aber vor dem 'return' funktioniert die' logIn' Funktion. Sinn ergeben. Vielen Dank – Mikel

1

Sie müssen learn about this.

Sie könnten Ihr Problem mit arrow functions beheben, die die Bedeutung von this nicht ändern.

Sie möchten vielleicht use Babel, um Ihren ES6-Code in ES5 zu kompilieren, damit sich Browser mit Ihrer modernen Codebasis gut verhalten.

+0

Werden Pfeilfunktionen in der Wildnis weitgehend unterstützt? – CollinD

+0

Überprüfen Sie diese Kompatibilitätstabelle: https://kangax.github.io/compat-table/es6/. Sie könnten Babel oder ein ähnliches Werkzeug verwenden, um Pfeilfunktionen und andere moderne Syntax in etwas zu übersetzen, das alle Browser verstehen. – bevacqua

+0

Ich guck mal – Mikel