2014-02-08 3 views
0

У меня многогранный на вопросмарионетки вид, контроллер, маршрутизатор отношение

Я следующий набор вверх.

Использование:

  • использованием Requirejs
  • Использование марионеток JS
  • Изображение грубое описание моих мыслей/Намерение

У меня есть один главный "контроллер маршрутизатора", чтобы контролировать мое приложение , Этот контроллер достигает использования контроллеров, которые представляют «вкладку/область сайта». Приведенный пример иллюстрирует мое желание использовать назначенный контроллер пользовательской вкладки.

  • Могу ли я заставить модель контроллера пользователей вернуть экземпляр, а затем определить или выполнить экземпляр в главном контроллере?

-

  • Если я теперь перейти к другой вкладке, то не будет экземпляр быть активным еще? Я хочу, чтобы банковские операции по закрытому методу этого контроллера закрывали вниз, а также ... Что мне делать?

Rough description

ответ

1

Я думаю вы спрашиваете 2 вопроса:

  1. "? Как я пишу свои суб-контроллеров, так что они возвращают что-то полезное"
  2. «Как управлять подменю?»

Чтобы ответить # 1:

Это довольно легко в требуют директивы определения:

define(["underscore", "jquery", "backbone", "marionette"], 
    function(_, $, Backbone, Marionette) { 

     var SubController = Marionette.Controller.extend({ 
      // your code here... 
     }); 
    } 

    return SubController; 
); 

Как вы можете видеть, мы возвращаем ссылку на объект управления. Это передается последующим основным контроллером:

define(["underscore", "jquery", "backbone", "marionette", "path/to/SubController"], 
    function(_, $, Backbone, Marionette, MyController) { 

     var MacroController = Marionette.Controller.extend({ 

      initialize: function(options) { 
       this.subController = new SubController(); 
      } 
     }); 
    } 

    return MacroController; 
); 

Ответить # 2:

марионеток дает множество вариантов для управления видом. Поскольку я точно не знаю, как структурирован код, трудно ответить на него напрямую.

Обычно ваш Marionette.Application будет определить некоторые основные Marionette.Regions управлять видом приложений. Если вы являетесь структурой вкладки пользователя , это все приложение, я бы сказал, что это подходящее место для управления этим. Если нет, Marionette предлагает Marionette.Layout объект.Marionette.Layout в основном:

... гибрид из ItemView и коллекции объектов региона. Они идеально подходят для рендеринга макетов приложений с несколькими субрегионами, управляемыми указанными менеджерами регионов. Source

Marionette.Region объектов принять взгляды и через какие-то структуры кукольного авто-магически ручку закрытие события (по большей части в любом случае) и другая очистку, связанную с видом.

Вот цитата из документации:

Регионов обеспечивают последовательные методы управления, шоу и близкие взгляды в своих приложениях и макетах. Они используют селектор jQuery, чтобы показывать ваши мнения в нужном месте.

Я строил это, я бы избежать главного контроллера, однако, и может структурировать это соответственно:

MyApplication 
    // TabsController manages the layout below 
    TabsController 
    // Layout will manage tab clicks and swapping out content 
    // in the tabsContentRegion 
    TabLayout 
     #tabsContentRegion 

Я всегда нахожу David Sulc's book и the accompaning repo большая ссылка для структуры приложения марионеток.

Дайте мне знать, если вам нужна дополнительная помощь.

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