2016-01-24 2 views
0

Я пробовал создавать регионы с помощью Marionette.LayoutView, но когда я его визуализую, в целевой области ничего не отображается. Однако, если я создаю те же регионы с помощью addRegions, он отлично работает. И я просто не мог понять, почему.Marionette addRegions vs regions by 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-container как div вместо скрипта шаблона типа. Похоже, мне нужны коды рефакторинга, потому что у меня есть другие div внутри контейнера приложения. –

Смежные вопросы