2012-12-26 13 views
55

Sto cercando di imparare le nuove modifiche apportate in Backbone 0.9.9.Backbone 0.9.9: Differenza tra listenTo e su

Attualmente ho avuto problemi a capire la differenza tra listenTo e on:

listenTo

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

}); 

su

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

}); 

Ho sentito dire che listenTo permette wi th stopListening per annullare l'iscrizione a tutti gli eventi quando, per esempio, la vista viene rimossa per evitare perdite di memoria.

È questa l'unica ragione?

+0

Possibile duplicato di [Backbone js .listenTo vs .on] (https://stackoverflow.com/questions/16823746/backbone-js-listento-vs-on) –

risposta

40

listenTo e stopListening provenivano dalla comunità, in pratica. Aiutano a rendere più facile legare e sciogliere gli eventi.

C'è un sacco di documentazione esistente e post di blog che circonda l'idea, comprese cose che ho scritto sull'argomento.

Johnny Oshika è la prima persona che ho visto utilizzando questa tecnica. E 'stato originariamente pubblicato come una risposta ad una domanda StackOverflow qui: Backbone.js : repopulate or recreate the view?

Si può leggere quello che ho scritto su questo, qui:

+0

Sto solo imparando anche questo, quindi questo è una domanda tempestiva per me. È prassi consigliata utilizzare ora listenTo per associare tutti gli eventi che potrebbero dover essere non associati ad un certo punto durante il ciclo di vita dell'app? – user1031947

+12

È una buona domanda che sarebbe bene avere una risposta più dritta a – ErichBSchulz

+0

concordato con ErichBSchulz, sebbene non ci sia riferimento a listenTo nei 3 post del blog che ha fatto hs, suppongo che @DerickBailey stia dicendo sì, usare 'listenTo' su' on'. – AJP

53

Quando si crea una vista, sia l'evento listenTo e on aggiungono la manipolazione. Tuttavia, quando la vista viene distrutta, la chiamata listenTo sarà automatically remove the event handler. Questo ascoltatori di eventi prevents memory leaks e zombie.

Quindi, utilizzare on se si desidera gestire personalmente l'handler. Assicurati di chiamare lo off. Altrimenti, chiama listenTo.