Görünümün events
özniteliği aracılığıyla Backbone'un otomatik olay delegasyonunu kullanan bir Twitter bootstrap-modal'ı temel alan bir Backbone.js görünümü oluşturmaya çalışıyorum.Backbone.js görünümünde bootstrap-modal kullanma
that.$element
.appendTo(document.body)
.show()
Bence:
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})
@
tekabül (Bıyık) HTML şablonu modal görüntülemeden önce görünümü HTML klonlar olarak
Maalesef önyükleme-modal omurga olay heyet kırmak gibi görünüyor :<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>
ne save
ne de 012 İlgili olaylar tetiklendiğindeçağrılır.
Herhangi bir fikrin var mı? Anahtar sonradan görünür yapmadan önce @el
atamak ve @delegateEvents()
çağırmak imkanı veren iki adımda içine modal gösteren bölmek olduğunu
App.Views.ProjectsNav ||= {}
class App.Views.ProjectsNav.NewProjectView extends Backbone.View
tagName: 'div'
events: {
'click .save': 'save',
'click .cancel': 'hide',
'hidden': 'hidden',
'shown': 'shown'
}
initialize: (options) ->
super(options)
@collection = options.collection
hide:() ->
@el.modal(true).hide()
false
save: (e) ->
...
@model.save(attrs, {
success: (project) =>
@model = project
@collection.add(@model)
@hide()
error: (project) =>
alert('Something went wrong: ' + project)
}
)
false
render:() ->
@el = ich.nav_edit_project_template(@model.toJSON()).modal('keyboard': true, 'backdrop': true)
@delegateEvents()
@el.modal('show': true)
@
hidden:() ->
@remove()
false
shown:() ->
App.Helpers.Forms.setFocus($(@el), true)
false
şeyi özetliyor:
Modal HTML ile doldurmak için kullanabileceğiniz bir çeşit "açılmış" geri çağırma var mı? Temel olarak klonlamayı (veya en azından "delegeyi" kınlayan klonlamanın bir kısmını) atlayın. –
Evet, cf. http://twitter.github.com/bootstrap/1.4.0/bootstrap-modal.js. Ne yazık ki, gösteri olayı klondan önce çağrılıyor (ve asıl sorundan dolayı gösterilen olayı alamıyorum). –
Gösterilen 'olay' hakkında ne? "Bu olay, kullanıcı kullanıcı tarafından görünür hale getirildiğinde (css geçişlerinin tamamlanması için bekleyecektir) başlatılır." –