IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Angular Discussion :

Angular + Firebase + Promise, impossible de récupérer la valeur dans le .then()


Sujet :

Angular

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de vertebre
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 184
    Par défaut Angular + Firebase + Promise, impossible de récupérer la valeur dans le .then()
    Bonsoir,

    J'ai une application angular & ionic avec un input (ion-input) :

    • je stocke la valeur entrée par l'utilisateur dans ma BDDFirebase
    • je récupère cette valeur pour l'assigner comme valeur par défaut de mon input //mon problème


    Lorsque je récupère cette valeur en BDD, je n'arrive pas à l'assigner comme valeur de mon input car je n'ai pas accès au this qui me permet de référer aux variables de la classe this.maVariable

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <ion-input placeholder="Pseudo" [(ngModel)]="todo.pseudo" (change)="onPseudoChange()"></ion-input>

    TS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    export class ProfilPage {
     
      todo = {}
      user_profil = {} as Profil;
      public pseudo: string;
      constructor(public navCtrl: NavController, afDB: AngularFireDatabase, public events: Events) {
     
    /*events.subscribe('pseudo_ready', () => {
            console.log("pseudo_ready ==> "+"pseudo");
          });
    */
          console.log('ProfilPage', "salut ProfilPage");
          //this.pseudo="test"; // fonctionne
          this.load_info();
      }
     
      ionViewDidLoad() {
          console.log('ionViewDidLoad ProfilPage', 'ProfilPage');
      }
     
      load_info() {
          let user = firebase.auth().currentUser;
        var url = firebase.database().ref(user.id+'/'+'user_profil');
        url.once("pseudo")
            .then(function(snapshot) {
                let pseudo_fire = snapshot.child("pseudo").val();
                console.log('load_info', " load_info pseudo_fire "+pseudo_fire);
                //this.put_info(pseudo_fire);
                //this.todo['pseudo'] = pseudo_fire;
                //todo['pseudo'] = pseudo_fire;
                //this.todo.pseudo=pseudo_fire;
                //todo.pseudo=pseudo_fire;
                //this.pseudo=pseudo_fire;
                console.log("pseudo", "pseudo= "+pseudo); // afficher la valeur marche :)
            },
            function(error) {
                console.log("erreur de la promise load_info()");
            });
        //this.events.publish('pseudo_ready');
      }
     
    }
    Ce que j'ai déjà essayé

    • la valeur récupérée depuis Firebase s'affiche bien dans le then() grâce à console.log() mais je ne peux la récupérer dans une variable de classe ou l'assigner directement comme valeur de mon ion-input.
    • j'utilise l'objet todo pour stocker toutes les valeurs de ma page à afficher.
    • j'ai tenté d'utiliser sans succès une variable de class pseudo: string
    • j'ai tenté d'appeler une autre fonction mais sans succès tjrs
    • j'ai tenté d'émettre un événement dans le then une fois la promise réussie mais je n'ai toujours pas accès au this.events, d'autre part si je ne le fais pas dans then() la promise n'est pas encore finie avant émission de l' event qui émet donc une valeur undefined
    • j'ai tenté sans succès d'assigner la valeur de ma promise dans mon ion-input comme dans le code suivant :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
       
       this.todo['pseudo'] = url.once("pseudo")
      .then(function(snapshot) {
      [...]        // M'affiche Object[Object]
      }});


    Je comprend que cette fonction est asynchrone mais pourriez m'expliquer comment assigner le résultat de ma promise comme valeur par défaut de mon <ion-input> svp ?

  2. #2
    Membre confirmé Avatar de vertebre
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 184
    Par défaut
    j'ai trouvé la solution (6 jours pour trouver):

    remplacer ce ******* then par =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    url.once("value", (snapshot) => {
    // on a accès au this.variable
    },
    function(error) {
    console.log("erreur de la promise load_info()");
    });
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/11/2009, 13h34
  2. Impossible de récupérer la valeur d'un menu déroulant
    Par kyake dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/10/2009, 16h00
  3. [ODBC] ACCESS - Impossible de récupérer la valeur de @@identity (équivalent mysql_insert_id)
    Par FredFrance21 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/10/2008, 14h40
  4. [AJAX] Impossible de récupérer les valeurs en Post
    Par Tommyl dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/06/2007, 20h30
  5. [PEAR][HTML_QuickForm] Impossible de récupérer les valeurs du formulaire
    Par Mainman dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/05/2007, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo