Función de activación al hacer clic si la vista tiene una determinada clase (backbone.js)
tengo undiv
generado por una vista de backbone.js. Cuando el usuario hace clic en estediv
, una claseactive
se agrega a ladiv
y la funciónaddToSet
es ejecutado.
Problema: Quiero que se active otra función cuando la vistadiv
tiene la claseactive
. Sin embargo, mi intento mostrado abajo siempre causaaddToSet
Función para ejecutar cuando se hace clic.
Ahora, me quito'click': 'addToSet'
desde elevents
función, dejando solo'click .active': 'removeFromSet'
. Haciendo clic en eldiv
no hace que nada suceda! ¿Es esto porque el controlador de eventos no puede seleccionar eldiv
¿De la vista en sí, sólo de los elementos dentro de ella?
¿Alguna idea de cómo puedo resolver este problema? ¡Gracias!
Código JS
SetView = Backbone.View.extend({
tagName: 'div',
className: 'modal_addit_set',
template: _.template( $('#tpl_modal_addit_set').html() ),
events: {
'click': 'addToSet',
'click .active': 'removeFromSet'
},
initialize: function(opts) {
this.post_id = opts.post_id;
},
render: function() {
$(this.el).html( this.template( this.model.toJSON() ) );
if(this.model.get('already_added'))
$(this.el).addClass('active');
return this;
},
addToSet: function() {
$.post('api/add_to_set', {
post_id: this.post_id,
set_id: this.model.get('id'),
user_id: $('#user_id').val()
});
},
removeFromSet: function() {
$.post('api/remove_from_set', {
post_id: this.post_id,
set_id: this.model.get('id')
});
}
});