Backbone.js 0.9.9:listenTo和on之间的差异

j0pj023g  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(156)

我正在尝试学习他们在Backbone 0.9.9中所做的新更改。
目前,我在理解listenToon之间的区别时遇到了一些问题:

收听

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

});

日期

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

});

我听说listenTo允许stopListening取消订阅所有事件,例如视图被删除以避免内存泄漏。
这是唯一的理由吗?

gijlo24d

gijlo24d1#

当你创建一个视图时,listenToon都添加了事件处理。但是,当视图被破坏时,listenTo调用将automatically remove the event handler。这个prevents memory leaks和zombie事件监听器。
所以,如果你想自己管理这个处理程序,就使用on。只要确保调用off即可。否则,就调用listenTo

neskvpey

neskvpey2#

基本上,listenTostopListening来自社区,它们有助于简化绑定和取消绑定事件。
有很多现有的文档和博客文章围绕着这个想法,包括我写的关于这个主题的东西。
Johnny Oshika是我看到的第一个使用这种技巧的人。它最初是作为一个StackOverflow问题的答案发布在这里的: Backbone 网. js:是否重新填充或重新创建视图?
你可以在这里读到我写的关于这个的文章:

相关问题