I am using the mustache template engine and I only want to display the first item in a long list but cant seem to find the docs for doing so?
if I use:
{{# links}}<a href="{{& url}}">{{& title }}</a>{{/ links}}
i get all of the links, however i only want the first one to be displayed, sounds easy but I cant find any docs on this.
This solution is working with the new version of Mustache.js (only):
mustache.render("{{a.0}}", {a: ['hi','world']})
=> 'hi'
The solution @Millad presented almost worked for me. Using handlebars.js though I had to use it with brackets.
{{ a.[0] }}
=> hello
res.render('view', { a: ['hello', 'world'] })
Mustache has does not have logic, from the docs:
We call it "logic-less" because there are no if statements, else clauses, or for loops. Instead there are only tags. Some tags are replaced with a value, some nothing, and others a series of values. This document explains the different types of Mustache tags.
So what you essentially want is a mechanism to do an if link is the first
- so you can handle this on the data side, by only putting 1 element in your data, or by adding a chunk of data like when you're putting your data in you add a value like display
and set it to 'inline' or 'none' then in your template do:
{{# links}}<a href="{{& url}}" style="display: {{display}};">{{& title }}</a>{{/ links}}
Then, later, you can call scripting in page to change the style.display
on some user or application action.
Those are my first though it may simply be easier to set data = data[0]
for this particular template. The problem is you probably WANT to use that whole list at some point, to comment on that I'd need to see more your usage and where the data's populating from.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With