主干0.9.9:ListenTo和之间的区别

我正试图学习他们在Backbone 0.9.9中所做的新改变。

目前我遇到了一些问题,要了解ListenTo与之间的区别:

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

 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取消订阅所有事件时,例如视图被删除,以避免内存泄漏。

这是唯一的原因吗?

问候,博多

listenTolistenTo来自社区的listenTo基本上来自于社区。 它们有助于更容易地绑定和解除绑定事件。

围绕这个想法有很多现有的文档和博客文章,包括我在这个主题上写的东西。

约翰尼奥希卡是我看到使用这种技术的第一人。 它最初发布为一个StackOverflow问题的答案: Backbone.js:重新填充或重新创build视图?

你可以阅读我写的关于这个:

  • Backbone.EventBinder:为您的骨干应用程序提供更好的事件pipe理
  • 植物大战僵尸! 跑! (在主干应用程序中pipe理页面转换)
  • Backbone.js和JavaScript垃圾收集

当你创build一个视图, listenTo和添加事件处理。 但是,当视图被销毁时, listenTo调用将自动移除事件处理程序 。 这可以防止内存泄漏和僵尸事件监听器。

所以,如果你想自己pipe理处理程序,请使用on 。 只要确保off 。 否则,调用listenTo