Estoy intentando crear una vista de Backbone.js basada en una rutina de arranque de Twitter, que hace uso de la delegación automática de eventos del Backbone a través del atributo events
de la vista.Uso de bootstrap-modal como vista Backbone.js
Desafortunadamente, arranque-modal parece romper delegación de eventos de la espina dorsal, ya que clona la vista HTML antes de mostrar el modal:
that.$element
.appendTo(document.body)
.show()
Mi opinión:
App.Views.ProjectsNav ||= {}
class App.Views.ProjectsNav.NewProjectView extends Backbone.View
events: {
'click .save': 'save',
'shown': 'shown'
}
save: (e) ->
...
false
shown:() ->
App.Helpers.Forms.setFocus($(@el), true)
false
render:() ->
$(@el).html(ich.nav_edit_project_template(@model.toJSON()))
@$('.modal').modal({'show': true, 'keyboard': true, 'backdrop': true})
@
El (bigote) plantilla HTML correspondiente :
<div class="modal hide" style="display: none; ">
<div class="modal-header">
<a href="#" class="close">×</a>
<h3>New Project</h3>
</div>
<div class="modal-body form-stacked">
<label for="name">Name</label> <input type="text" name="name" value="{{name}}"/><input type="hidden" name="lock_version" value="{{lock_version}}"/>
</div>
<div class="modal-footer">
<a href="javascript:void(0)" class="save btn primary">Create</a>
<a href="javascript:void(0)" class="cancel btn secondary">Cancel</a>
</div>
</div>
ni save
ni shown
se invocan cuando se activan los eventos respectivos.
¿Alguna idea?
¿Hay alguna devolución de llamada "abierta" de algún tipo que pueda usar para completar el modal con HTML? Básicamente omite la clonación (o al menos la parte de la clonación que está atornillando 'delegar'). –
Sí, cf. http://twitter.github.com/bootstrap/1.4.0/bootstrap-modal.js. Lamentablemente, se llama al evento show antes del clon (y no recibo el evento mostrado debido al problema original). –
¿Qué pasa con el evento 'shown'? "Este evento se dispara cuando el modal se ha hecho visible para el usuario (esperará a que se completen las transiciones css)". –