2012-06-21 8 views
20

Ich benutze die Schnurrbart-Vorlage-Engine und ich möchte nur das erste Element in einer langen Liste anzeigen, aber kann nicht finden, die Dokumente dafür zu tun?Zeige nur das erste Element in der Liste mit Moustache

wenn ich benutze:

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

i alle Links bekommen, aber nur ich der erste, der angezeigt werden soll, klingt einfach, aber ich kann keine Dokumente zu diesem Thema finden.

+0

Können Sie die folgende Antwort als richtig eingestellt? http://Stackoverflow.com/a/17950970/171711 – Coyote

Antwort

36

Diese Lösung arbeitet mit der neuen Version von Mustache.js (nur):

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

Dies sollte jetzt als die richtige Antwort festgelegt werden. – Coyote

+0

Was wäre, wenn wir die letzte Position erreichen wollten, ohne zu wissen, wie viele Itens wir in der Anordnung haben? – Periback

2

Schnurrbart hat keine Logik, von der docs:

Wir nennen es „logisch weniger“, weil es keine if-Anweisungen sind, sonst Klauseln oder Schleifen. Stattdessen gibt es nur Tags. Einige Tags sind ersetzt mit einem Wert, einige nichts, und andere eine Reihe von Werten. Dieses Dokument erläutert die verschiedenen Typen von Moustache-Tags.

Also, was Sie wollen, ist ein im wesentlichen Mechanismus ein if link is the first zu tun - so können Sie dies auf der Datenseite umgehen, indem nur Putting 1 Elements in Ihren Daten, oder durch einen Teil der Daten wie das Hinzufügen, wenn Sie sind setzen Sie Ihre Daten in einen Wert wie display hinzufügen und auf ‚inline‘ oder ‚none‘ gesetzt dann in der Vorlage zu tun:

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

dann später, können Sie Scripting in Seite rufen Sie die style.display auf einigen Änderungen Benutzer- oder Anwendungsaktion.

Das sind meine ersten, aber es kann einfacher sein, data = data[0] für diese bestimmte Vorlage zu setzen. Das Problem ist, dass Sie wahrscheinlich die ganze Liste irgendwann verwenden möchten, um zu kommentieren, dass ich mehr Ihre Verwendung sehen müsste und woher die Daten kommen.

+0

Danke für diese .. Ich kann sehen, was Sie sagen, aber es scheint seltsam. Ich habe getan, was Sie vorgeschlagen haben und das Modell pre-render geändert. Danke – Alex

+0

Ja, die Idee ist, dass Schnurrbart ist schnell, aber es hat nicht den logischen Overhead von anderen Templating-Bibliotheken. Sie können sich auch andere Templating-Bibliotheken ansehen, wenn Moustache nicht Ihren Anforderungen entspricht. Es gibt eine gute Diskussion hier: http://www.quora.com/JavaScript/What-is-the-best-JavaScript-templating-framework-and-why – artlung

1

Die Lösung @Millad fast für mich gearbeitet vorgestellt. Mit lenkern.js musste ich es allerdings mit Klammern verwenden.

{{ a.[0] }} 

=> hallo

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