1

Ich bin neu in Polymer und ich habe ein paar Probleme. Ich habe den folgenden Code-Code für meine Polymerfire-Registrierungsseite.

 Polymer({ 
     is: 'my-register', 
     properties: { 
      message: { 
       type: String, 
       value: '', 
      }, 
      email:{ 
       type: String, 
       value: '', 
      }, 
      password: { 
       type: String, 
       value: '', 
      }, 
      user: { 
       type: Object, 
       notify: true, 
      }, 
      customUser: { 
       value: {}, 
       notify: true, 
      }, 
     }, 
     loginSuccess: function(){ 
      this.customUser['status'] = 1; 
      if(this.customUser['status'] == 1 && this.message == ""){ 
       console.log("done"); 
       // this.$.ironLocation.set('path', '/profile'); 
      } 
     }, 
     createUserWithEmailAndPassword: function() { 
      this.error = null; 
      this.$.auth.createUserWithEmailAndPassword(this.email, this.password) 
       .then(function(response) { 
        this.loginSuccess(); 
        console.log("success"); 
       }) 
       .catch(function(error) { 
        console.log("Error"); 
       }); 
      this.password = null; 
     }, 
     ready: function(){ 
      this.customUser['status'] = 0; 
     }, 
     handleError: function(e) { 
      this.message = 'Error: ' + e.detail.message; 
     }, 
     signOut: function() { 
      this.error = null; 
      this.$.auth.signOut(); 
     }, 
    }); 

Das Problem ist, dass ich nicht die loginSuccess Funktion aus der createUserWithEmailAndPassword Erfolgsfunktion aufrufen können. Ist es möglich, von der Firebase-Auth-Create-Funktion auf externe Methoden zuzugreifen?

Und gibt es eine Möglichkeit, benutzerdefinierte Attribute im Firebase-Benutzerobjekt zu verfolgen, anstatt ein zweites benutzerdefiniertes Benutzerobjekt zu erstellen? Ich denke nicht, dass dies sehr effizient ist, da ich auf beide Eigenschaften in der gesamten Anwendung zugreifen muss.

+0

Es gibt keine andere Möglichkeit als einen benutzerdefinierten Benutzer für benutzerdefinierte Benutzerinformationen zu erstellen. nicht sicher, aber versuchen, (das) an die create-Funktion zu binden –

+0

Wie genau meinst du bind (this)? Übergeben Sie dies als Parameter an die create-Funktion? –

+0

versuchen: .then (Funktion (Antwort)) { this.loginSuccess(); console.log ("Erfolg"); } .bind (this)). oder für eine sauberere Lösung können Sie auch mit Pfeilfunktionen versuchen (es6): .then ((response) => { this.loginSuccess(); console.log ("Erfolg"); }). Niros Antwort wird wahrscheinlich funktionieren, ist aber nicht sehr sauber –

Antwort

0

Sie können dies versuchen ..

createUserWithEmailAndPassword: function() { 
    var self = this; 
    // Or ES6 
    // let self = this;  
    this.error = null; 
    this.$.auth.createUserWithEmailAndPassword(this.email, this.password) 
    .then(function (response) { 
     self.loginSuccess(); 
     console.log("success"); 
    }).catch(function (error) { 
     console.log("Error"); 
    }); 

    this.password = null; 
} 

ich diesen Trick verwenden und für mich arbeiten.

Prost ..!

+1

in es6 müssen Sie nicht den Trick mit self tun = dies bei der Verwendung von Pfeilfunktionen –

Verwandte Themen