Как добавить динамические события для просмотра?
Как добавить динамические события в класс 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.
Кто-нибудь знает решение?
Спасибо,
Рохан
Ответы
Ответ 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()
.