如何从视图中删除事件处理程序

How to remove event one handler from view?

本文关键字:删除 事件处理 程序 视图      更新时间:2023-09-26

在以下代码中:

var AppView = Backbone.View.extend({
   events:{
      "click .button":"cancel"
   },
   cancel:function() {
      console.log("do something...");
   },
   onSomeEvent: function() {
     this.$el.undelegate('.button', 'click', this.cancel);   
   }
});
var view = new AppView();

我需要从具有' button '类的元素中取消委托this.cancel处理程序。不幸的是,this.$el.undelegate在onSomeEvent方法不工作。

如何删除该事件处理程序?

试试这样写:

....
onSomeEvent: function() {
    this.delegateEvents(
        _(this.events).omit('click .button')
    );    
}

更新:

你的意思是:

this.events[event] = "someEvent";
//call delegateEvents() on the view to re-bind events
this.delegateEvents();