Question

Je suis en train de mettre une variable booléenne à chaque fois que l'utilisateur est connecté.

App.ApplicationRoute = Ember.Route.extend({
  isLoggedIn: false,

  init: function() {
      if (loggedIn) {
        this.set('isLoggedIn', true);
      } else {
        console.log(error)
        this.set('isLoggedIn', false);
      }
    });
  }
});

Cependant, sur this.set() J'obtiens:

Uncaught TypeError:indéfini n'est pas une fonction

Des idées?

J'ai pensé que la meilleure place pour traiter de session de l'utilisateur est dans l' App.ApplicationRoute depuis sa la racine de tout.Est-ce à cause d'un problème?

Mise à JOUR:Avec des commentaires ici est l'actuel / plein de code.

App.ApplicationRoute = Ember.Route.extend({
  isLoggedIn: false,

  init: function() {
    this._super();

    auth = new FirebaseSimpleLogin(appRef, function(error, user) {
      if (user) {
        console.log(user)
        this.set('isLoggedIn', true);
      } else {
        console.log(error)
        this.set('isLoggedIn', false);
      }
    });
  }
})

J'ai donc quitté mon Firebase code déjà parce que je n'ai pas vraiment pense que c'est pertinent, mais pour l'amour de localiser le problème, je vais l'ajouter dans.

Était-ce utile?

La solution

La raison a à voir avec la

this

à tort défini dans votre firebasesimplelogin.La fonction que vous utilisez à l'intérieur du constructeur doit être passé dans une référence à la " il " de l'extérieur du contexte.La façon la plus simple de le faire est de changer le code de la fonction pour cela:

function(error, user) {
  if (user) {
    console.log(user)
    this.set('isLoggedIn', true);
  } else {
    console.log(error)
    this.set('isLoggedIn', false);
  }
}.bind(this));

Autres conseils

Première chose :)

Comme indiqué à la Ember.js documenation:

NOTE:Si vous ne remplacent init pour un cadre de classe comme la Braise.Afficher ou de Braise.ArrayController, assurez-vous d'appeler cette._super() dans votre déclaration init!Si vous ne le faites pas, la Braise ne peut pas avoir l'occasion de faire d'importants travaux d'installation, et vous verrez comportement étrange dans votre application.

Deuxièmement, votre loggedIn variable n'est pas déclarée, ni instancié et, par conséquent, null ainsi que votre error mais je suppose que vous venez d'extraire certains code de votre projet à la tripoter un rapide exemple, donc si vous ne:

App.ApplicationRoute = Ember.Route.extend({
  isLoggedIn: false,

  init: function() {
      this._super(); // <-- call `this._super()` here

      if (loggedIn) {
        this.set('isLoggedIn', true);
      } else {
        console.log(error)
        this.set('isLoggedIn', false);
      }
    });
  }
});

tout devrait fonctionner comme prévu :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top