Estoy usando Handlebars.js para la representación de la vista lateral del cliente. Si Else funciona muy bien pero he encontrado un condicional de 3 vías que requiere ELSE IF:
Esto no funciona:
{{#if FriendStatus.IsFriend }}
<div class="ui-state-default ui-corner-all" title=".ui-icon-mail-closed"><span class="ui-icon ui-icon-mail-closed"></span></div>
{{else if FriendStatus.FriendRequested}}
<div class="ui-state-default ui-corner-all" title=".ui-icon-check"><span class="ui-icon ui-icon-check"></span></div>
{{else}}
<div class="ui-state-default ui-corner-all" title=".ui-icon-plusthick"><span class="ui-icon ui-icon-plusthick"></span></div>
{{/if}}
¿Cómo hago ELSE IF con el manillar?
handlebars.js
reach4thelasers
fuente
fuente
Respuestas:
Los manillares admiten
{{else if}}
bloques a partir de 3.0.0.Manillares v3.0.0 o superior:
Antes de Handlebars v3.0.0, sin embargo, tendrá que definir un ayudante que maneje la lógica de ramificación o anidar
if
manualmente:fuente
else if
Usualmente uso este formulario:
fuente
{{/if}}{{/if}}{{/if}}{{/if}}{{/if}}
Los manillares ahora son compatibles a
{{else if}}
partir de 3.0.0. Por lo tanto, su código ahora debería funcionar.Puede ver un ejemplo en "condicionales" (ligeramente revisado aquí con un agregado
{{else}}
:http://handlebarsjs.com/block_helpers.html
fuente
{{else if}}
sintaxis.El espíritu del manillar es que no tiene lógica. A veces esto nos hace sentir como si estuviéramos luchando con él, y a veces terminamos con una lógica if / else fea y anidada. Usted podría escribir un ayudante; muchas personas aumentan el manillar con un operador condicional "mejor" o creen que debería ser parte del núcleo . Sin embargo, creo que en lugar de esto,
es posible que desee organizar las cosas en su modelo para que pueda tener esto,
Solo asegúrese de que solo una de estas banderas sea cierta. Lo más probable es que si está usando esto
if/elsif/else
en su punto de vista, probablemente también lo esté usando en otro lugar, por lo que estas variables podrían no ser superfluas.Mantenlo delgado.
fuente
Escribí este simple ayudante:
Es algo así como el patrón de la Cadena de Responsabilidad en Manillares
Ejemplo:
No es otra cosa, pero en algunos casos puede ayudarte)
fuente
Ayudantes incorporados
Puede usar el asistente if para representar condicionalmente un bloque. Si su argumento devuelve falso, indefinido, nulo, "", 0 o [], los manillares no mostrarán el bloque.
modelo
Cuando pasa la siguiente entrada a la plantilla anterior
fuente
Hola, solo tengo una edición de nombre de clase MENOR, y hasta ahora así es como se divulgó. Creo que necesito pasar parámetros de pila múltiple al asistente
server.js
header.handlebars
fuente