作業中のMarionetteアプリケーションの領域でビューを使用してレイアウトをレンダリングすることに関して、実用的なソリューションがありますが、何かが正しく感じられません。DOMに直接何かを追加する必要がありますか?
これがコントローラーでの私のメソッドです:
//Grab the main Layout
var layout = new APP.Views.LayoutView();
//Render that layout
layout.render();
//Make the model
var simpleModel = new APP.Models.simpleModel({
"field1" : "foo",
"field2" : "bar"
});
layout.header.show(new APP.Views.subView({model: simpleModel}));
$('body').html(layout.el);
それは私にとって不自然に感じる最後の部分です。これは主に、「layout.header.show」を.html()の後に移動すると、正しくレンダリングされないためです。DOMにプッシュした後に動的に変更できない場合のリージョンのポイントは何ですか?
これが私のレイアウトです:
APP.Views.LayoutView = Backbone.Marionette.Layout.extend({
template: "#layoutTemplate",
className : 'wrapper',
regions: {
header: "#header",
footer: "#footer"
}
});
そしてここにサブビューがあります:
APP.Views.subView = Backbone.Marionette.ItemView.extend({
template : '#headerTemplate',
className: 'container'
});
私が言ったように、これは機能しますが、リージョンを適切に使用していないように感じます。レイアウトをDOMにレンダリングした後、リージョンにアクセスできるようにする、より優れた、より簡潔な方法はありますか?
マリオネットのドキュメントでは、ページ上で物事を取得するために.html()を使用することについては言及されていないようです-これは不要であるために省略されているのか、それとも想定されているのでしょうか。
誰か助けてもらえますか?