É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...
Vous devez vous connecter pour publier un commentaire.
Backbone.View
est étendu avecBackbone.Events
qui signifie que vous pouvez facilement déclencher des événements personnalisés et de transmettre toutes les données que vous souhaitezsi je ne sais pas pourquoi vous ne pouvez pas voir la méthode sur la vue, il devrait fonctionner - Êtes-vous sûr à 100% que vous êtes l'instanciation de l'afficher correctement? et que
window.view
est instance deCreateItemView
?Si vous voulez le faire à l'extérieur de votre modèle et vous inscrire à l'événement sur votre point de vue, vous pouvez effectuer les opérations suivantes:
Ensuite, vous pouvez vous abonner à des événements sur SomeObject
ou déclencher l'événement