【发布时间】:2016-04-01 17:36:03
【问题描述】:
今天我了解到 Backbone.View 的 listenTo 方法旨在通过 Backbone 模型或集合的更改来侦听 trigger-ed 事件。它不是为监听 DOM 事件而设计的。
这引发了以下问题。 Backbone 文档说,当 Backbone 视图是 remove-ed 时,它将自动取消订阅它正在通过 listenTo 侦听的所有事件。它没有具体提及视图放置在 DOM 元素上的侦听器的命运。
那么当监听 DOM 事件的视图被移除时会发生什么?以下两种情况有什么区别吗?
一个视图有一个
events对象,该对象包含视图的$el的子节点上正在被监听的事件列表;视图监听一些任意的 DOM 元素,不一定是视图
$el的子元素。这种情况和之前的情况有什么不同吗?
当视图被移除时,视图的监听器会自动取消订阅 DOM 事件,还是应该手动取消订阅?
【问题讨论】:
-
在第一个场景中,事件监听器被移除。这项工作由 jQuery 的 .remove() 方法 (api.jquery.com/remove) 完成,Backbone.View.prototype.remove 委托给该方法。在第二种情况下,您的视图必须在任意 DOM 元素上显式调用 .off()。
标签: javascript events dom backbone.js