Marionette通过LayoutView添加区域与区域

时间:2016-01-24 01:37:10

标签: backbone.js marionette

我尝试使用Marionette.LayoutView创建区域,但是当我渲染它时,目标区域中没有任何内容。但是,如果我使用addRegions创建相同的区域,它可以正常工作。而我无法理解为什么。

App = new Marionette.Application();

AppLayoutView = Marionette.LayoutView.extend({
    template: "#app-container",
    regions: {
    headerRegion: "#header-region",
    mainRegion: "#main-region",
    drawerRegion: "#drawer-region",
    dialog: "#dialog-region"
    }
});

App.mainlayout = new AppLayoutView();
App.mainlayout.render();

App.drawerView = new DrawerView();
App.mainlayout.getRegion('drawerRegion').show(App.drawerView);

如果我按如下方式更改代码以使用addRegions,则会成功呈现。

App = new Marionette.Application();
App.addRegions({
      headerRegion: "#header-region",
      mainRegion: "#main-region",
      drawerRegion: "#drawer-region",
      dialog: "#dialog-region"
    });

App.drawerView = new DrawerView();
App.drawerRegion.show(App.drawerView);

有人可以帮助我理解为什么一个有效,另一个没有,即使我理解他们做同样的事情。也许我误会了。感谢

1 个答案:

答案 0 :(得分:1)

对于你的AppLayoutView,如果所有这些div实际上都在你的'#app-container'中

然后你可以使用:

App.mainlayout.drawerRegion.show(App.drawerView);

但我的猜测是你的主模板可能有问题,需要看起来像这样:

<script id="app-container" type="text/template">
    <div>
        <div id="drawer-region">...</div>
    </div>
</script>