Parece bastante extraño que no pueda entender cómo hacer esto con bigote. ¿Es compatible?
Este es mi triste intento de intentarlo:
{{#author}}
{{#avatar}}
<img src="{{avatar}}"/>
{{/avatar}}
{{#!avatar}}
<img src="/images/default_avatar.png" height="75" width="75" />
{{/avatar}}
{{/author}}
Obviamente, esto no está bien, pero la documentación no menciona nada como esto. La palabra "más" ni siquiera se menciona :(
Además, ¿por qué el bigote está diseñado de esta manera? ¿Este tipo de cosas se consideran malas? ¿Intenta obligarme a establecer el valor predeterminado en el modelo en sí? ¿Qué pasa con los casos en que eso no es posible?
javascript
templates
mustache
egervari
fuente
fuente
{{#each items}}{{#unless @first}}Output comma before 2nd, 3rd, 4th...{{/unless}}{{/each}}
es más legible, mucho más limpio y aún es presentación. "Sin lógica" es una guía, no tiene que ser una camisa de fuerza.mustache
Respuestas:
Así es como lo haces si / si no en Moustache (perfectamente compatible):
O en tu caso:
Busque secciones invertidas en los documentos: https://github.com/janl/mustache.js
fuente
if (condition){ //do something}
seguida de aif (!condition){//do something else}
. Además, la cantidad de lógica que uno puede realizar en lógica es extremadamente reducida en comparación con un lenguaje basado en lógica. La existencia o la no existencia son las únicas comprobaciones, es decir, no puede comprobar si el valor de una etiqueta es igual a 5 y luego caer en el código de esa etiqueta.Esto es algo que resuelve en el "controlador", que es el punto de la plantilla sin lógica.
En realidad, esto es MUCHO mejor que mantener la URL de la imagen u otros medios que pueden o no cambiar en sus plantillas, pero lleva un tiempo acostumbrarse. El punto es desaprender la visión del túnel de la plantilla, una url de img de avatar se usará en otras plantillas, ¿vas a mantener esa url en las plantillas X o en un solo objeto de configuración DEFAULTS? ;)
Otra opción es hacer lo siguiente:
Y en la plantilla:
Pero eso va en contra de todo el significado de la plantilla sin lógica. Si eso es lo que quiere hacer, quiere plantillas lógicas y no debe usar Moustache, aunque sí tenga la oportunidad de aprender este concepto;)
fuente
Su declaración else debería verse así (tenga en cuenta lo siguiente
^
):En bigote esto se llama 'secciones invertidas'.
fuente
Puede definir un ayudante en la vista. Sin embargo, la lógica condicional es algo limitada. Moxy-Stencil ( https://github.com/dcmox/moxyscript-stencil ) parece abordar esto con ayudantes "parametrizados", por ejemplo:
{{isActive param}}
y en la vista:
view.isActive = function (ruta: cadena) {ruta de retorno === this.path? "class = 'active'": ''}
fuente
Tenga en cuenta que puede usar
{{.}}
para representar el elemento de contexto actual.fuente