Как удалить обработчик event one из представления?

#javascript #jquery #backbone.js #backbone-events

#javascript #jquery #backbone.js #backbone-события

Вопрос:

В следующем коде:

 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();
  

Мне нужно отменить this.cancel удаление обработчика из элементов с « button классами. К сожалению this.$el.undelegate , метод OnSomeEvent не работает.

Как я мог удалить этот обработчик событий?

Комментарии:

1. попробуйте this.$el.off('click', '.button', this.cancel);

2. К сожалению, это не работает: (

Ответ №1:

попробуйте что-то вроде:

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

Обновить:

вы имеете в виду, как:

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

Комментарии:

1. Спасибо за ответ, но мне нужно подписаться только на это. отменить обратный вызов вместо all.

2. Спасибо за ответ. Могу ли я также добавить некоторые события в this.events?

3. @Erik см. Добавленный ответ