Я думаю вы спрашиваете 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 большая ссылка для структуры приложения марионеток.
Дайте мне знать, если вам нужна дополнительная помощь.