主干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取消订阅所有事件时,例如视图被删除,以避免内存泄漏。
这是唯一的原因吗?
问候,博多
listenTo
和listenTo
来自社区的listenTo
基本上来自于社区。 它们有助于更容易地绑定和解除绑定事件。
围绕这个想法有很多现有的文档和博客文章,包括我在这个主题上写的东西。
约翰尼奥希卡是我看到使用这种技术的第一人。 它最初发布为一个StackOverflow问题的答案: Backbone.js:重新填充或重新创build视图?
你可以阅读我写的关于这个:
- Backbone.EventBinder:为您的骨干应用程序提供更好的事件pipe理
- 植物大战僵尸! 跑! (在主干应用程序中pipe理页面转换)
- Backbone.js和JavaScript垃圾收集
当你创build一个视图, listenTo
和添加事件处理。 但是,当视图被销毁时, listenTo
调用将自动移除事件处理程序 。 这可以防止内存泄漏和僵尸事件监听器。
所以,如果你想自己pipe理处理程序,请使用on
。 只要确保off
。 否则,调用listenTo
。