MarionetteJS v1.0.3 を使用。
2 つのリージョンを持つ a のインスタンスがありますMarionette.Layout
。
最初の領域はCompositeView
左側にあり、他の領域はItemView
右側にあります。
CompositeView は、複数の ItemView をレンダリングします。
アイデアは、ユーザーが左側のコレクション内の項目の 1 つをクリックして、選択したレコード全体を右側の ItemView に表示するというものです。
上部のレイアウトがチェーン内のイベントにサブスクライブするにはどうすればよいですか: Layout > Region > CompositeView > ItemView
上部のレイアウトは右側の詳細な領域を認識する唯一のレイアウトであるため、クリック イベントがトリガーされる 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);
}
}
});