Javascript 处理收集时关闭主干事件
我让我的集合订阅在主干对象本身上触发的事件:Javascript 处理收集时关闭主干事件,javascript,backbone.js,Javascript,Backbone.js,我让我的集合订阅在主干对象本身上触发的事件: const Items = BaseCollection.extend({ model: ItemModel, initialize() { BaseCollection.prototype.initialize.apply(this, arguments); Backbone.on('api:data:foobar', (data) = > { }); } });
const Items = BaseCollection.extend({
model: ItemModel,
initialize() {
BaseCollection.prototype.initialize.apply(this, arguments);
Backbone.on('api:data:foobar', (data) = > {
});
}
});
但是,当我创建此集合的新实例时,主干会添加另一个侦听器。触发此事件时,将多次触发回调。有没有办法:
发生这种情况的原因是,每次创建新实例(调用集合的initialize方法)时,都会将事件处理程序直接绑定到主干对象 相反,您要做的是颠倒关系,让您的收藏收听事件,并在处理收藏时取消订阅。因为版本0.9.9主干提供了一种使用 比如说
initialize() {
BaseCollection.prototype.initialize.apply(this, arguments);
this.listenTo(Backbone, 'api:data:foobar', (data) = > {
});
要取消订阅/关闭此事件侦听器,您可以使用该方法(如果删除集合,也应自动删除这些侦听器)。当您调用With views时,它将自动调用stopListening
如果您真的想使用将事件处理程序直接绑定到主干对象,并且只绑定一次,您可以通过将事件绑定移到initialize方法之外来实现这一点,但是使用listenTo可能会更好