Events Backbone.js Views:我只需要取消一个视图上的一个事件
我有一个主干。视图包含以下事件:Events Backbone.js Views:我只需要取消一个视图上的一个事件,events,backbone.js,view,backbone-views,Events,Backbone.js,View,Backbone Views,我有一个主干。视图包含以下事件: ... events : { "click .text1" : "doSomething", "click .text2" : "doAnotherThing", }, ... 我需要取消第二个事件。我知道你可以用这个;但它取消了视图上所有事件的委派。我只需要取消一个事件。 我该怎么做?来自: delegateventsdelegatevents([events]) 使用jQuery的on函数为视图中的DOM事件提供声明性回调。 […] 当
...
events : {
"click .text1" : "doSomething",
"click .text2" : "doAnotherThing",
},
...
我需要取消第二个事件。我知道你可以用这个;但它取消了视图上所有事件的委派。我只需要取消一个事件。
我该怎么做?来自:
delegateventsdelegatevents([events])
使用jQuery的on
函数为视图中的DOM事件提供声明性回调。[…]
当再次运行delegateEvents时,可能会使用不同的
events
散列,所有回调都将被删除并重新委托-对于在不同模式下需要不同行为的视图非常有用
注意两件事:
events
对象传递给delegateEvents
,默认情况下,它将使用this.events
,但如果需要,您可以使用不同的事件delegateEvents
或多或少会在绑定新事件之前调用undelegateEvents
this.delegateEvents(
_(this.events).omit('click .text2')
);
这是一种简单的方法,可以删除要删除的单个事件处理程序。顺便说一句,只需给您一个对象的副本,其中省略了某些键,因此(this.events).omit('click.text2')
可用于获取您感兴趣的事件绑定,而无需更改this.events
(该绑定附加到原型上,因此由您视图的所有当前和未来实例共享)
演示:来自主干文档: delegateEvents的单事件版本可作为
delegate
提供。在里面
事实上,delegateEvents只是一个围绕delegate
的多事件包装器。
undelegateEvents
的对应项可通过undelegate
获得
源代码中的函数是:
undelegate: function(eventName, selector, listener) {
this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);
return this;
}
所以调用this.unelegate(“单击“,”.text2”)