2014-02-03 2 views
0

Я следую руководству Брайана Манна по созданию приложения в Backbone + Marionette (~ 35 минут в Ep08), и у меня возникают проблемы с добавлением контроллера в основной регион чем один из его субрегионов.Контроллер магистрали/марионеток, вставляющий вид в неправильный регион

макет страницы структурирована следующим образом:

<div id="header-region"></div> 
<div id="main-region"></div> 
<div id="footer-region"></div> 

И я пытаюсь вставить содержимое в #admin-navs-region, который должен быть вложен под #admin-list области внутри #main-region:

<!-- admin/list/templates/list_layout; inserted into #main-region --> 
<div id="admin-list"> 
    <div id="banner-region"></div> 
    <div id="admin-navs-region"></div> 
    <div id="article-region"></div> 
</div> 

контроллер в вопросе заключается в следующем:

@PE.module "AdminApp.List", (List, App, Backbone, Marionette, $, _) -> 

    class List.Controller extends App.Controllers.Application 

    initialize: -> 
     adminNavs = App.request "admin:nav:entities" 

     @layout = @getLayoutView() 

     @listenTo @layout, "show", => ## LINES IN QUESTION 
      @bannerRegion()    ## LINE 11 
      @listRegion adminNavs  ## LINE 12 

     @show @layout 

     bannerRegion: -> 
     bannerView = @getBannerView() 
     @show bannerView, region: @layout.bannerRegion 

     listRegion: (adminNavs) -> 
     listView = @getListView adminNavs 
     @show listView, region: @layout.adminNavsRegion 

     getListView: (adminNavs) -> 
     new List.Navs 
      collection: adminNavs 

     getBannerView: -> 
     new List.Banner 

     getLayoutView: -> 
     new List.Layout 

и соответствующий вид:

@PE.module "AdminApp.List", (List, App, Backbone, Marionette, $, _) -> 

    class List.Layout extends App.Views.Layout 
    template: "admin/list/list_layout" 

    regions: 
     bannerRegion: "#banner-region" 
     articleRegion: "#article-region" 
     adminNavsRegion: "#admin-navs-region" 

    class List.Banner extends App.Views.ItemView 
    template: "admin/list/_banner" 

    class List.Nav extends App.Views.ItemView 
    template: "admin/list/_nav" 

    tagName: "li" 

    class List.Navs extends App.Views.CollectionView 
    tagName: "ul" 
    className: "side-nav" 
    itemView: List.Nav 

Когда я закомментируйте LINES IN QUESTION (см 3-й фрагмент кода), то list_layout визуализируется должным образом в #main-region. Однако, если я раскомментирую LINE 11 или LINE 12, то #admin-list полностью заменяется шаблонами List.Banner или List.Nav, вместо того, чтобы вставлять их в указанную область.

Все выглядит так, как будто он работает со мной, но вместо того, чтобы вставлять в правильную область, код просто заменяет все внутри #main-region.

Кто-нибудь знает, как начать отлаживать это?

ответ

0

решаемые после реализации этого от некоторых своеобразных CoffeeScript/Backbone/взаимодействия марионетка ...

Я использую вкладки (не пробелы) для отступа мой CoffeeScript, и у меня был:

<tab> class List.Layout extends App.Views.Layout 
<space><space><tab> template: "admin/list/list_layout" 

По какой-то причине это не нарушает вещи, а скорее заставляет марионетку отображать над родительским разделом. Фиксированный это путем замены <space><space> с <tab>:

<tab> class List.Layout extends App.Views.Layout 
<tab><tab> template: "admin/list/list_layout" 

Только один из этих понедельников ...

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