Backbone 0.9.9: Difference between listenTo and on

假如想象 提交于 2019-11-26 10:18:47

问题


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?


回答1:


listenTo and stopListening came from the community, basically. They help to make it easier to bind and unbind events.

There's a lot of existing documentation and blog posts surrounding the idea, including stuff that I've written on the subject.

Johnny Oshika is the first person that I saw using this technique. It was originally posted as an answer to a StackOverflow question here: Backbone.js : repopulate or recreate the view?

You can read what I've written about this, here:

  • Backbone.EventBinder: Better Event Management For Your Backbone Apps
  • Zombies! RUN! (Managing Page Transitions In Backbone Apps)
  • Backbone.js And JavaScript Garbage Collection



回答2:


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.



来源:https://stackoverflow.com/questions/14041042/backbone-0-9-9-difference-between-listento-and-on

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!