私は現在Marionette 2.4.7
を使用しており、LayoutViews
を使用してアプリケーションを構成しています。非常に簡単な例LayoutViews
(通常、テンプレートは別々に住ん)を取る:Marionette LayoutView regions - 非ItemViewコンテンツを表示
var LayoutView = Marionette.LayoutView.extend({
template: "<div id="main-region"></div><div id="menu-region"></div>",
regions: {
mainRegion: "#main-region",
menuRegion: "#menu-region"
}
});
var MainLayoutView = Marionette.LayoutView.extend({
template: "<div id="title-region"></div><div id="content-region"></div>",
regions: {
titleRegion: "#title-region",
contentRegion: "#content-region"
}
});
を基本的にページは、ページのタイトルとメインのコンテンツを表示するためのセクションを表示するために、2つのセクション、セクションに分割されます。私は、次を使用してコンテンツ領域に移入:
var layoutView = new LayoutView();
var mainLayoutView = new MainLayoutView({ className: "someClass" });
layoutView.mainRegion.show(mainLayoutView);
var contentLayoutView = new ContentLayoutView();
mainLayoutView.contentRegion.show(contentLayoutView);
ContentLayoutView
はサブ領域を持ち、他のもののかなり多くを行うので、非常に複雑図です。 MainLayoutView
のtitleRegion
は数語しか表示しないので、非常に簡単です。
私の質問には、titleRegion
のItemView
を作成する必要性を回避する方法がいくつかあります。このシナリオはアプリケーション全体を通して数回繰り返され、ケースごとに別々のItemViews
を作成する必要があります。私は私が使用してDIV HTML
を設定することができます知っている:
$("#title-region").html("Page title");
が、私は物事のMarionette
やり方に固執したいです。
私が試してみました:
mainLayoutView.titleRegion.show("Page name");
を私はエラーを取得:'view.on' is not a function
、明らかに.show
はItemView/LayoutView
を期待しているからです。
を使用した場所でそのようなものを使用する必要があるかもしれませんので、
title
は実際にはすでに、(私は覚えていないこと)ビューのプロパティかもしれあなたが必要とするとき、あなたの 'mainLayoutView'再レンダリングされます変更するタイトル、または 'contentRegion'でビューを変更するときにタイトルを変更する必要がありますか? – rdubya@rdubya 'mainLayoutView'は、ユーザがメニューをスクロールするときに再レンダリングされ、' titleRegion'と 'contentRegion'が毎回設定されます –
再レンダリングを行うコードの関連部分を追加できますか?あなたができなければ、それは大丈夫です。もし私がそれを見ることができれば、あなたにサンプルコードを与える方が少し簡単です。 – rdubya