Si construyera una aplicación web de una sola página (SPWA) utilizando Backbone.js y jQuery con, por ejemplo, dos controladores que requirieran diseños de página únicos, ¿cómo representaría el ¿diseño?Diseños de representación con Backbone.js
- ControllerA es un diseño de tres columnas.
- ControllerB es un diseño de dos columnas.
- La ruta predeterminada activa ControllerA.Welcome() - la representación inicial.
- Ambos controladores tienen vistas diferentes representadas dentro de sus columnas que aprovechan todo el valor de modelo/vista de Backbone.js.
El problema
Cuando el usuario solicita una ruta asignada a ControllerB, todo el diseño de la página tiene que cambiar a no utilizar el diseño ControllerA. Esto ocultaría el diseño de ControllerA y mostraría el diseño de ControllerB o renderizaría el diseño si no estuviera ya en el DOM.
Mi primer pensamiento
¿Quieres que utilizar una vista Backbone.js para hacer el diseño, y luego, hacer que cada columna, con sus puntos de vista con destino a modelo?
Mi segundo pensamiento
¿Le añadir un método de configuración/diseño a su controlador que utiliza jQuery para hacer que el diseño y luego permitir que la acción responsable de la ruta haga su cosa? Usar jQuery dentro del controlador me parece un poco desagradable, pero quiero que el controlador sea responsable de garantizar que el diseño correcto esté visible para sus rutas.
Aquí hay un fragmento de mi segundo pensamiento:
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...');
}
});
Gracias
Gracias por tomarse el tiempo para responder. ¡Lo aprecio!
¿No sería poner múltiples diseños en la página y ocultar en función de su lógica una gran cantidad de elementos innecesarios de carga en el escenario donde los elementos de diseño ocultos contienen datos obtenidos de la base de datos? – anxiety
No. Aún usa plantillas, pero cárguelas en una etiqueta de script con un tipo de error (como js-template). Nunca utilizas el dom para almacenar información db. Use la misma técnica de script que para la plantilla anterior y cargue los datos como json. – Julien