MainView
aと aの 2 つのビューがありChildView
ます。はChildView
、インスタンスの外部で構成およびMainView
インスタンス化され、 に注入されますMainView
。は、メソッドのおかげでMainView
、いつレンダリングされるかを示しています。ChildView
onRender
私が抱えている問題は、 が2 回目MainView
にレンダリングされると、 上のすべてのイベント リスナーが強制終了されることです。は2 回目のレンダリングでも表示されますが、ユーザー イベント (マウス クリックなど) には応答しません。独自のイベントでさえありません。ChildView
ChildView
var MainView = Marionette.Layout.extend({
regions: {
'menu': '.menu'
},
template: "#sample-template",
onRender: function() {
this.menu.show(this.options.menuView);
}
});
var ChildView = Marionette.ItemView.extend({
template: '#menu-template',
triggers: {
'click .js-click-me': 'clicked'
},
onClicked: function() {
alert('the button was clicked...');
}
});
// Where the view is used and displayed in a main app region:
var model = new Backbone.Model({
contentPlacement: "here"
});
var childView = new ChildView({
model: model
});
var view = new MainView({
model: model,
menuView: childView
});
this.region.show(view);
// A 2nd render kills event listeners in the childView
// Remove this line, and it will work again...
view.render();
これを示すjsfiddleがあります。2 番目 (65 行目) をコメントアウトすると、 dorender
のイベントが実際に機能することがわかります。ChildView
これを防ぐ最善の方法は何ですか?マリオネットでビューを構成して別のビューに挿入するより良い方法はありますか?