tutorial - Meteor+Blaze-En caso de otra declaración
publication meteor (3)
La versión actual de Blaze admite más si - vea a continuación un formato de muestra y una referencia a la resolución del problema de Github.
{{#if isUserProfile}}
<h3>User Profile</h3>
{{else if isLawyerProfile}}
<h3>Lawyer Profile</h3>
{{else}}
<h3>Test</h3>
{{/if}}
Enlace de referencia: GitHub Else si se produce una resolución
Al {{#if}}
esta Guía de uso de Blaze , parece que Blaze admite {{#if}}
y {{else}}
, pero no he visto ejemplos de una instrucción if-else. ¿Esto es compatible con Blaze? O tengo que hacer un bloque adicional si dentro del bloque else, que puede ponerse feo.
Intenté con {{else if}}
, pero eso dio un error.
{{#if en}}{{text.en}}{{else if tc}}{{text.tc}}{{/if}}
Siguiendo con la excelente respuesta de @David Wheldon, también vale la pena señalar que puede pasar parámetros a sus funciones auxiliares de JavaScript desde su plantilla Blaze.
Entonces, por ejemplo, el código a continuación representa selectivamente las opciones para una lista de selección llamando al método auxiliar con la línea isSelected region customerCompany
:
{{#if isSelected region customerCompany}}
<option value={{region._id}} selected>{{region.name}}</option>
{{else}}
<option value={{region._id}}>{{region.name}}</option>
{{/if}}
y luego en el archivo js:
isSelected: function (region, customer) {
return customer.salesRegionId === region._id;
},
Este enfoque de pasar sus variables a sus ayudantes generalmente se recomienda para evitar la confusión que puede surgir con el cambio de significado de this
palabra clave cuando se usan plantillas.
Spacebars usa la misma estructura de control de flujo que handlebars por lo que la respuesta es la misma que esta . En tu caso:
{{#if en}}
{{text.en}}
{{else}}
{{#if tc}}
{{text.tc}}
{{/if}}
{{/if}}
Nota al margen: una de las cosas buenas de jade es que admite else if
.
A veces, una mejor alternativa es mover la lógica a un ayudante como este:
Template.myTemplate.helpers({
textValue: function() {
if (this.en) {
return this.text.tc;
} else if (this.tc) {
return this.text.tc;
}
}
});
<template name="myTemplate">
<p>{{textValue}}</p>
</template>