2016-01-24 60 views
0

我尝试使用Marionette.LayoutView创建区域,但是当我渲染目标区域时,什么都不显示。但是,如果我使用addRegions创建相同的区域,它可以正常工作。我只是不明白为什么。Marionette通过LayoutView添加区域和区域

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

为了您AppLayoutView,如果所有这些div的实际上是你的“#应用程序容器”

内。然后你可以用:

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

但我的猜测是,你的主要模板可能是错,它将需要看起来像这样:

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

@rekamar谢谢你指出。我完全错过了。我有#app容器作为div而不是类型模板的脚本。看起来我需要重构代码,因为我的应用程序容器中有其他div。 –