Esta es la estrategia que he usado para cargar plantillas en una interfaz Amber:
- Usted comienza su proyecto de ámbar como de costumbre
- Cree la clase del controlador (widget) que usará la plantilla html
- Utilice el archivo html estático inicial o
- El #renderOn: de algún widget
- Para hacer un div con una identificación donde insertará el contenido: html div id: ‘bigTemplate’
- Use require.js con el complemento de texto para cargar la plantilla
- Use la devolución de llamada de esa llamada para que su controlador continúe el flujo o reaccione según corresponda
Algunos de los beneficios que he percibido hasta ahora son:
- Copie y pegue una parte del código de los ejemplos de arranque o cualquier otra fuente
- Hace que la colaboración con diseñadores que ofrece html sea sin problemas
- Le permite usar su editor de texto favorito para redactar html
- Le libera de usar el lienzo como la única forma de obtener html renderizado
- Beneficios de las funciones de almacenamiento en caché del navegador
- Hace que su código fuente de Amber sea más pequeño
- Se mejoró la separación de preocupaciones al hacer que su código fuente de Amber se centre más en el comportamiento (Controladores) y se acople de manera flexible a las apariencias (Vistas)
Apuesto a que la barra de navegación de Bootstrap será un ejemplo popular:
AppNavBar>>renderOn: html
html div id: 'navbar'.
"The navbar is a complex piece of html.
Lets forget the canvas way and grab it from a template. Bam!"
require
value:(Array with: 'bower_components/text/text!views/navbar.html')
value:[ :template |
'#navbar' asJQuery html: template].
AppNavBar>>initialize
super initialize.
AppRouter when: 'aboutToRoute' do:[ self clearActive ]
AppNavBar>>clearActive
"Removes the .active class from all tabs"
'.navbar-nav > li' asJQuery removeClass: 'active'