Если вы должны были создать одностраничное веб-приложение (SPWA) с помощью Backbone.js и jQuery с - например, двумя контроллерами, для каждой из которых требовались уникальные макеты страниц, как бы вы отображали макет?
- ControllerA - это расположение трех столбцов.
- ControllerB - это расположение двух столбцов.
- Маршрут по умолчанию активирует ControllerA.Welcome() - первоначальный рендеринг.
- Оба контроллера имеют разные представления, отображаемые в своих столбцах, которые используют преимущества модели Backbone.js/view goodness.
Проблема
Когда пользователь запрашивает маршрут, сопоставленный с ControllerB, весь макет страницы должен измениться, чтобы больше не использовать макет ControllerA. Это скроет макет ControllerA и покажет макет ControllerB - или, отринув макет, если он еще не был в DOM.
Моя первая мысль
Можно ли использовать представление Backbone.js для рендеринга макета, а затем визуализировать каждый столбец с его представлениями, связанными с моделью?
Моя вторая мысль
Не могли бы вы добавить метод настройки/макета к контроллеру, который использовал jQuery для визуализации макета, а затем разрешить действие, ответственное за маршрут, сделать это? Использование jQuery внутри контроллера немного для меня немного, но я хочу, чтобы контроллер отвечал за то, чтобы для него были видны правильные макеты.
Вот фрагмент моей второй мысли:
var Controller = Backbone.Controller.extend
({
routes :
{
"" : "welcome" // default action
}
/** Constructor **/
,initialize: function(options)
{
console.log('Workspace initialized');
}
// LAYOUT
,renderLayout : function ()
{
console.log('Rendering Layout.');
var $ = window.$;
var layout = require('js/layout/app/big_menu');
$(layout.parent).html(layout.html);
}
// ACTIONS
/** Default Action **/
,welcome : function ()
{
this.renderLayout();
console.log('Do the whole model/view thing...');
}
});
Спасибо
Спасибо, что нашли время ответить. Я ценю это!