Élever un Backbone.js voir l'événement

Je voudrais trouver un moyen de lever une backbone.js "l'événement", sans avoir quelque chose de changé dans le modèle ou dans les dom.

Par exemple, je suis le chargement de l'Facebook SDK de manière asynchrone. Je suis abonné à l'auth.connexion de l'événement, et voudrais envoyer un message à mon point de vue que l'utilisateur est connecté en tant qu'il peut rendre à nouveau lui-même de manière appropriée.

Mon point de vue, ressemble à ceci:

window.CreateItemView = Backbone.View.extend({
  el: $('#content'),
  initialize: function() {
    this.render();
  },
  render: function() {
    //do something
    return this;
  },
  setSignedRequest: function(signedRequest) {
    //do something with signedRequest
  }
});

Dans mon facebook code, je fais ceci:

  FB.Event.subscribe('auth.login', function(response){
    if (response.status === 'connected') {
      var uid = response.authResponse.userID;
      var accessToken = response.authResponse.accessToken;
      window.signedRequest = response.authResponse.signedRequest;

      if (window.view && window.view.setSignedRequest) {
          window.view.setSignedRequest(window.signedRequest);
      }
    }
  });

Cependant, alors que la fenêtre.la vue existe, il ne peut pas voir la setSignedRequest méthode. J'ai veillé à ce que mes scripts sont chargés dans l'ordre correct. Étrangement, j'ai ce même code sur une autre page mais d'un point de Vue différent de l'objet et il fonctionne très bien. Je n'ai pas vu de différence qui permettrait de rendre compte de cela.

Une meilleure solution serait d'élever une sorte d'événement et ont la vue à écouter pour elle. Cependant, je ne veux pas utiliser l'événement de changement sur le modèle de la signedRequest ne devrait pas être une propriété du modèle. Est-il une meilleure façon d'accomplir cette?

  • Eh bien, il y a le .trigger() méthode. Vous pourriez faire de votre point de vue écouter un événement personnalisé, qui vous permettraient de déclencher plus tard...
InformationsquelleAutor James | 2012-02-19