我有一个集合视图,每个项目视图都是一个复合视图,它也有一个项目视图。我想听听最后一个(子子)项目视图中的事件。
View.Block = Marionette.Layout.extend({
triggers: {
'click .content': 'block:click'
}
});
View.Category = Marionette.CompositeView.extend({
itemView: View.Block
});
View.Categories = Marionette.CollectionView.extend({
itemView: View.Category
});
在我的控制器中,我只引用了View.Categories:
var categories_view = new View.Categories({
collection: categories
});
是否可以使用Marionette的内置视图事件收听来自View.Block
的点击事件?我尝试了categories_view.on('itemview:block:click')
,但这不起作用,因为View.Block不是View.Categories
的项目视图,而是View.Category
的项目视图。
答案 0 :(得分:1)
您需要使用模块或应用程序级事件聚合器来实现您的目标:
events: {
"click .something": "triggerEvent"
},
triggerEvent: function(e){
myApp.trigger("something:clicked", e);
}
(myApp
是您的木偶应用程序的实例。)
然后听那个事件:
myApp.on("something:clicked", function(e){
e.preventDefault();
console.log("something was clicked");
});