使用 MarionetteJS v1.0.3。
我有一个Marionette.Layout
有两个区域的实例。
第一个区域是CompositeView
左边的a,另一个区域是ItemView
右边的a。
CompositeView 呈现多个 ItemView。
这个想法是,用户单击左侧集合中的一个项目,以在右侧的 ItemView 上完整显示所选记录。
顶部的Layout如何订阅链中的事件:Layout > Region > CompositeView > ItemView
由于顶部的 Layout 是唯一知道右侧详细区域的布局,因此需要从触发 click 事件的 CompositeView 一路消耗事件。我知道有全局事件,但它们是全局的,并且可能同时运行多个布局,因此它们的事件会发生冲突。
LeftListPanelView = Marionette.CompositeView.extend({
template: "#leftPanel",
itemViewContainer: "ul",
events: {
"click li": "rowClicked"
},
rowClicked: function (e) {
var itemid = $(e.currentTarget).data("itemid") * 1;
var selectedItem = this.collection.get(itemid);
if (selectedItem) {
this.trigger("itemSelected", selectedItem);
}
}
});