私は ItemView としていくつかのリージョンを持つレイアウトを使用して CompositeView を持っています:
var CompositeView = Backbone.Marionette.CompositeView.extend({
itemView: Layout,
template: _.template(...)
});
var Layout = Backbone.Marionette.Layout.extend({
template: _.template(...),
regions: {
mainRegion: ".main",
listRegion: ".list"
},
onRender : function () {
this.mainRegion.show(new SingleView({model : this.model}));
}
});
var SingleView = Backbone.Marionette.ItemView.extend({
template: _.template(...),
initialize: function(){
// Forward view events - is there a better way?
this.on('Module:submodule:action1', function(ev){
app.vent.trigger("Module:submodule:action1", ev);
});
},
triggers: {
"click .ui_toggleComplete": "Module:submodule:action1",
}
});
これにより、 app.on('Module:submodule:action1',...); を介して SingleView イベントを受け取ることができます。
モデル イベントをイベント アグリゲーター (app.vent) に転送せずに直接使用したいと考えています。
レイアウトを itemView として実装する前に、 CompositeView.on('itemview:Module:submodule:action1',...); のようなことができました。それが、ItemViews イベントを再び処理したい方法です。(さらにコレクションを表示するにはレイアウトが必要です...)