私は、ビューのevents
属性によるBackboneの自動イベント委任を利用するTwitterブートストラップモードに基づいてBackbone.jsビューを作成しようとしています。Backbone.jsビューとしてのbootstrap-modalの使用
残念ながら、ブートストラップモーダルが、それはモーダルを表示する前にビューのHTMLをクローンとしてバックボーンのイベントの委任を破るようだ:
that.$element
.appendTo(document.body)
.show()
マイビュー:
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})
@
対応(口ひげ)HTMLテンプレート:
<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>
save
でもshown
は、それぞれのイベントがトリガされたときに呼び出されます。
アイデア?
HTMLでモーダルを埋めるために使用できる、ある種の「開かれた」コールバックがありますか?基本的にはクローニングをバイパスしてください(または少なくともクローズアップの部分は 'デリゲート'になっています)。 –
はい、cf. http://twitter.github.com/bootstrap/1.4.0/bootstrap-modal.js。残念ながら、showイベントはクローンの前に呼び出されます(元の問題のために表示されたイベントが表示されません)。 –
'shown'イベントはどうですか? "このイベントは、モーダルがユーザーに見えるようになったときに発生します(CSSの移行が完了するまで待機します)。 –