javascript - change - addlistener
¿Cómo agregar eventos dinámicos para ver? (2)
Backbone delega automáticamente eventos del atributo de eventos de tu vista. Estás anulando los eventos previamente delegados. Puedes llamar a $ (this.el) .delegate (...) pero también puedes hacerlo
this.delegateEvents(_.extend(this.events, {''click select'': ''changeSelect''}));
¿Cómo puedo agregar eventos dinámicos en mi clase de vista en Backbone.js?
Tengo una clase de vista con
var myViewClass = Backbone.View.extend({
events: {
''change select'': ''changeSelect'',
''click a.changeLink'': ''clearSelect''
},
initialize: function() {
this.delegateEvents({''click select'': ''changeSelect''});
},
.
.
.
});
Esto está agregando el evento {''click select'': ''changeSelect''}, pero de alguna manera {''click a.changeLink'': ''clearSelect''} no funciona.
¿Alguien sabe la solución?
Gracias rohan
Ya que estoy haciendo esto mucho, aquí está mi pequeña extensión de Backbone (basada en la respuesta de Julien y mis pruebas):
Backbone.View.prototype.addEvents = function(events) {
this.delegateEvents( _.extend(_.clone(this.events), events) );
};
Utilizar:
BaseResizable.View = Base.View.extend({
initialize: function() {
Base.View.prototype.initialize.call(this);
this.addEvents({
''resizestop'': ''resizeStop''
});
},
resizeStop: function(event, ui){...}
}
Tendrá que hacer addEvents()
nuevamente si usa undelegateEvents()
.