停止在Backbone中侦听DOM事件

时间:2016-04-01 17:36:04

标签: javascript events dom backbone.js

今天我了解到Backbone.View的listenTo方法用于监听事件trigger - 由Backbone模型或集合中的更改。它不是为了侦听DOM事件而设计的。

提出了以下问题。 Backbone文档说,当Backbone视图为remove时,它会自动取消订阅它通过listenTo收听的所有事件。它没有具体提到视图放在DOM元素上的监听器的命运。

那么当正在删除侦听DOM事件的视图时会发生什么?以下两种情况之间有什么区别吗?

  • 视图有一个events对象,其中包含正在收听的视图$el的子节点上的事件列表;

  • 视图会侦听一些任意DOM元素,而不一定是视图$el的子元素。这种情况与前一种情况有什么不同吗?

视图的侦听器在删除视图时是否会自动取消订阅DOM事件,还是应该手动取消订阅?

1 个答案:

答案 0 :(得分:1)

  

视图有一个事件对象,其中包含正在监听的视图$ el的子节点上的事件列表;

当使用它的删除方法正确删除视图时,这些将被主干取消(删除)。

  

视图会侦听某些任意DOM元素,而不一定是视图$el的子元素。这种情况与前一种情况有什么不同吗?

使用骨干网没有内置的方法,不推荐使用。如果你自己这样做 - 一些元素持有事件监听器指向你的视图上哪些主干不知道的方法 - 你必须自己清理它们,否则它会创建僵尸视图(内存泄漏)