1

Je suis nouveau au polymère et j'ai quelques problèmes. J'ai le code de code de code suivant pour ma page d'inscription de polymerfire.

 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(); 
     }, 
    }); 

Le problème est que je ne peux pas appeler la fonction loginsuccess de la fonction de réussite createUserWithEmailAndPassword. Est-il possible d'accéder à des méthodes externes à partir de la fonction firebase-auth create?

Et existe-t-il un moyen de suivre les attributs personnalisés dans l'objet utilisateur Firebase au lieu de créer un deuxième objet utilisateur personnalisé? Je ne pense pas que ce soit très efficace parce que je dois accéder aux deux propriétés dans l'ensemble de l'application.

+0

Il n'y a pas d'autre possibilité que de créer un utilisateur personnalisé pour les informations utilisateur personnalisées. pas sûr mais essayez de lier (this) à la fonction de création –

+0

Comment voulez-vous dire bind (this)? Passer cela comme un paramètre à la fonction de création? –

+0

try: .then (fonction (réponse) { this.loginSuccess(); console.log ("succès"); } .bind (this)). ou pour une solution plus propre, vous pouvez également essayer avec des fonctions de flèche (es6): .then ((réponse) => { this.loginSuccess(); console.log ("succès"); }). La réponse de Neiro fonctionnera probablement mais n'est pas très propre –

Répondre

0

Vous pouvez essayer ..

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; 
} 

J'utilise cette astuce et de travailler pour moi.

Bravo ..!

+1

en es6 vous n'aurez pas besoin de faire le tour avec self = ceci en utilisant les fonctions de flèches –