Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

only show the first item in list using Mustache

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.

like image 362
Alex Avatar asked Jun 21 '12 21:06

Alex


3 Answers

This solution is working with the new version of Mustache.js (only):

mustache.render("{{a.0}}", {a: ['hi','world']})
=> 'hi'
like image 104
Millad Avatar answered Nov 09 '22 04:11

Millad


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'] })
like image 30
arc Avatar answered Nov 09 '22 03:11

arc


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.

like image 2
artlung Avatar answered Nov 09 '22 04:11

artlung