2016-01-24 58 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。 –