55 votes

Backbone 0.9.9: Différence entre ListenTo et sur

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 sur:

Ecouter

 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>');
    }

});
 

sur

 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ésabonner 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?

Cordialement, Bodo

53voto

Richard Points 2147

Lorsque vous créez une vue, les deux listenTo et on ajouter la gestion des événements. Toutefois, lorsque la vue est détruite, l' listenTo appel sera automatiquement supprimer le gestionnaire d'événements. Cela empêche les fuites de mémoire et zombie des écouteurs d'événement.

Ainsi, l'utilisation de on si vous souhaitez gérer le gestionnaire vous-même. Assurez-vous de vous appeler off. Sinon, appelez - listenTo.

40voto

Derick Bailey Points 37859

listenTo et stopListening provenaient de la communauté, dans le fond. Ils aident à rendre plus facile à se lier et à délier les événements.

Il y a beaucoup de documentation existante et des billets de blog entourant l'idée, y compris des trucs que j'ai écrits sur le sujet.

Johnny Oshika est la première personne que j'ai vu à l'aide de cette technique. Il a été posté en réponse à un StackOverflow question ici: Backbone.js : repeupler ou recréer la vue?

Vous pouvez lire ce que j'ai écrit sur ce sujet, ici:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X