Подтвердить что ты не робот

Как добавить динамические события для просмотра?

Как добавить динамические события в класс myview в Backbone.js

У меня есть класс вида с

var myViewClass = Backbone.View.extend({
    events: {
        'change select': 'changeSelect',
        'click a.changeLink': 'clearSelect'
    },

    initialize: function() {
        this.delegateEvents({'click select': 'changeSelect'});
    },

    .
    .
    .        
});

Это добавление {'click select': 'changeSelect'}, но каким-то образом {'click a.changeLink': 'clearSelect'} не woek.

Кто-нибудь знает решение?

Спасибо, Рохан

4b9b3361

Ответ 1

Магистраль автоматически делегирует события из атрибута событий вашего представления. Вы переопределяете ранее делегированные события. Вы можете вызвать $(this.el).delegate(...), но вы также можете сделать

this.delegateEvents(_.extend(this.events, {'click select': 'changeSelect'}));

Ответ 2

Поскольку я делаю это много, вот мое крошечное расширение Backbone (на основе ответа Жюльена и моего тестирования):

Backbone.View.prototype.addEvents = function(events) {
  this.delegateEvents( _.extend(_.clone(this.events), events) );
};

Использование:

BaseResizable.View = Base.View.extend({
  initialize: function() {
    Base.View.prototype.initialize.call(this);
    this.addEvents({
      'resizestop': 'resizeStop'
    });
  },
  resizeStop: function(event, ui){...}
}

Вам нужно будет сделать addEvents() снова, если вы используете undelegateEvents().