I am trying to learn the new changes they did in Backbone 0.9.9.
Currently I got problems to understand the difference between listenTo
and 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>');
}
});
on
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>');
}
});
I have heard that listenTo
allows with stopListening
to unsubscribe from all events when for example the view gets removed to avoid memory leaks.
Is this the only reason?
When you create a view, both listenTo
and on
add event handling. However, when the view is destroyed, the listenTo
call will automatically remove the event handler. This prevents memory leaks and zombie event listeners.
So, use on
if you want to manage the handler yourself. Just make sure to call off
. Otherwise, call listenTo
.