0

Backbone.Marionette の領域とレイアウトを示す例を作成しようとしていました。しかし、私は layout.region.show() を呼び出していますが、レイアウトにこだわっていますが、DOM のどこにも表示されていません。

完全な例は、このJsFiddleにあります。

これはレイアウト部分です:

AppLayout = Backbone.Marionette.Layout.extend({
template: "#layout-template",
  el : "layout-containr",

regions: {
  menu: "#menu",
  content: "#content"
}

});

レイアウト テンプレート:

<script id="layout-template" type="text/template">
<section>
  <div id="menu"></div>
  <div id="content"></div>
</section>

レイアウトを表示する方法は次のとおりです。

var layout = new AppLayout();
layout.render();
layout.menu.show(gridView);

GridView の定義は次の場所にあります。

 var GridView = Backbone.Marionette.CollectionView.extend({
itemView: GridRow,
  el:'#menu'

}); 

完全な例は、このJsFiddleにあります。

そして、私は無料の質問があります:

レイアウトはどこにアタッチする必要があるかをどのように知るのですか??? ネットのどこにも見つからなかったので、ここでいくつかの概念が欠けていることがわかりました。

4

1 に答える 1

0

アプリケーション レベルでレイアウトを表示するには、より大きな領域が必要です。

通常、Marionette アプリケーションを初期化すると、後でレンダリングするレイアウトを表示するためのいくつかのトップレベル領域ができます。

App.addInitializer =>
  App.addRegions
    menuRegion: '#header'
    contentRegion: '#stage' # These DOM come from your application layout

次に、コントローラーで、これらのレイアウトをトップレベル リージョンに表示します。

indexShow: ->

  layout = new App.Layouts.SomeLayout()
  App.contentRegion.show(layout)

  someView = new App.Views.SomeView()
  anotherView = new App.Views.AnotherView()

  layout.someSubRegion.show(someView)
  layout.anotherSubRegion.show(anotherView)

elそして、通常、ビューやレイアウトにはどちらも必要ありません

于 2013-04-11T06:19:02.683 に答える