2012-06-21 23 views
20

Estoy usando el motor de plantillas de bigote y solo quiero mostrar el primer elemento en una lista larga pero no puedo encontrar los documentos para hacerlo?solo muestra el primer elemento en la lista usando Bigote

si uso:

{{# links}}<a href="{{& url}}">{{& title }}</a>{{/ links}} 

me sale todos los enlaces, sin embargo quiero solamente el primero que se mostrará, parece fácil pero no puedo encontrar ninguna documentación sobre esto.

+0

¿Se puede establecer la siguiente respuesta como la correcta? http://stackoverflow.com/a/17950970/171711 – Coyote

Respuesta

36

Esta solución está trabajando con la nueva versión de Mustache.js (única):

mustache.render("{{a.0}}", {a: ['hi','world']}) 
=> 'hi' 
+1

Esto debería establecerse como la respuesta correcta ahora. – Coyote

+0

¿Qué pasaría si quisiéramos obtener la última posición, sin saber cuántos itens tenemos en la matriz? – Periback

2

bigote tiene no tiene lógica, desde el docs:

lo llamamos "lógica-menos" porque no hay sentencias if, else cláusulas, o de bucles. En cambio, solo hay etiquetas. Algunas etiquetas son reemplazadas con un valor, algunas nada, y otras una serie de valores. Este documento explica los diferentes tipos de etiquetas de bigote.

Así que lo que esencialmente quiere es un mecanismo para hacer un if link is the first - para que pueda manejar esto en el lado de los datos, por poner sólo 1 elemento en sus datos, o mediante la adición de un fragmento de datos como cuando estás poniendo sus datos en el que agrega un valor como display y la puso a 'en línea' o 'ninguno', entonces en la plantilla de hacer:

{{# links}}<a href="{{& url}}" style="display: {{display}};">{{& title }}</a>{{/ links}} 

luego, más tarde, puede llamar secuencias de comandos en la página para cambiar la style.display en algunas acción del usuario o aplicación.

Esas son las primeras, aunque puede ser más fácil establecer data = data[0] para esta plantilla en particular. El problema es que probablemente quiera usar esa lista completa en algún momento, para comentar que necesitaría ver más sobre su uso y de dónde provienen los datos.

+0

Gracias por esto ... Puedo ver lo que dices, pero parece extraño. He hecho lo que has sugerido y alteré el modelo de renderización previa. Gracias – Alex

+0

Sí, la idea es que Moustache es rápido, pero no tiene la sobrecarga lógica de otras bibliotecas de plantillas. Puede ver otras bibliotecas de plantillas si Moustache no se ajusta a sus necesidades. Hay una buena discusión aquí: http://www.quora.com/JavaScript/What-is-the-best-JavaScript-templating-framework-and-why – artlung

1

La solución @Millad presentó casi funcionó para mí. Usando manubs.js aunque tuve que usarlo entre paréntesis.

{{ a.[0] }} 

=> hola

res.render('view', { a: ['hello', 'world'] }) 
Cuestiones relacionadas