J'essaie d'apprendre les nouveaux changements qu'ils ont apportés à Backbone 0.9.9.
Actuellement, j'ai des problèmes pour comprendre la différence entre listenTo
et on
:
écouter
var View = Backbone.View.extend({
tagName: "div",
intialize: function() {
this.listenTo(this.model, 'change', this.render);
},
render: function() {
this.$el.empty();
this.$el.append('<p>hello world</p>');
}
});
activé
var View = Backbone.View.extend({
tagName: "div",
intialize: function() {
this.model.on('change', this.render, this);
},
render: function() {
this.$el.empty();
this.$el.append('<p>hello world</p>');
}
});
J'ai entendu dire que listenTo
permet avec stopListening
de se désinscrire de tous les événements lorsque, par exemple, la vue est supprimée pour éviter les fuites de mémoire.
Est-ce la seule raison?
listenTo
et stopListening
provenaient essentiellement de la communauté. Ils aident à faciliter la liaison et la dissociation des événements.
Il y a beaucoup de documentation et de blogs existants autour de l'idée, y compris des choses que j'ai écrites sur le sujet.
Johnny Oshika est la première personne que j'ai vue utiliser cette technique. Il a été initialement publié comme réponse à une question StackOverflow ici: Backbone.js: repeupler ou recréer la vue?
Vous pouvez lire ce que j'ai écrit à ce sujet ici:
Lorsque vous créez une vue, listenTo
et on
ajoutent la gestion des événements. Cependant, lorsque la vue est détruite, l'appel listenTo
supprimera automatiquement le gestionnaire d'événements . Cela empêche les fuites de mémoire et les écouteurs d'événements zombies.
Donc, utilisez on
si vous souhaitez gérer le gestionnaire vous-même. Assurez-vous simplement d'appeler off
. Sinon, appelez listenTo
.