2012-06-21 2 views
20

Sto usando il motore del modello dei baffi e voglio solo visualizzare il primo elemento in una lunga lista ma non riesco a trovare i documenti per farlo?mostra solo il primo elemento nell'elenco usando i baffi

se uso:

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

ottengo tutti i collegamenti, ma voglio solo la prima ad essere visualizzato, sembra facile ma non posso trovare qualsiasi documentazione su questo.

+0

Potete impostare la seguente risposta come quella giusta? http://stackoverflow.com/a/17950970/171711 – Coyote

risposta

36

Questa soluzione sta lavorando con la nuova versione di Mustache.js (solo):

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

Questo dovrebbe essere impostato come la risposta giusta ora. – Coyote

+0

e se volessimo ottenere l'ultima posizione, senza sapere quanti itens abbiamo nell'array? – Periback

2

Baffi ha non ha logica, dal docs:

Noi lo chiamiamo "logica-less", perché non ci sono le istruzioni if, else clausole, o per i cicli. Invece ci sono solo tag. Alcuni tag sono sostituiti con un valore, un po 'nulla e altri una serie di valori. Questo documento spiega i diversi tipi di tag Moustache.

Quindi quello che in sostanza vuole è un meccanismo per fare un if link is the first - in modo da poter gestire questo sul lato dati, da solo mettendo 1 elemento nei dati, o con l'aggiunta di un blocco di dati come quando sei mettendo i dati in si aggiunge un valore come display e impostarlo su 'inline' o 'none' poi nel modello fare:

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

poi, più tardi, è possibile chiamare script in pagina per modificare la style.display su alcuni azione dell'utente o dell'applicazione.

Questi sono i primi passi, tuttavia potrebbe essere più semplice impostare data = data[0] per questo modello particolare. Il problema è che probabilmente vorresti usare quell'intero elenco a un certo punto, per commentare che avrei bisogno di vedere più il tuo utilizzo e da dove il dato si sta diffondendo.

+0

Grazie per questo .. Posso vedere cosa stai dicendo ma sembra strano. Ho fatto ciò che hai suggerito e modificato il pre-rendering del modello. Grazie – Alex

+0

Sì, l'idea è che Moustache è veloce, ma non ha il sovraccarico logico di altre librerie di modelli. Potresti guardare ad altre librerie di template se Moustache non soddisfa le tue esigenze. C'è una buona discussione qui: http://www.quora.com/JavaScript/What-is-the-best-JavaScript-templating-framework-and-why – artlung

1

La soluzione @Millad presentato quasi ha funzionato per me. Usando handlebars.js anche se dovevo usarlo con parentesi.

{{ a.[0] }} 

=> ciao

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