How do I access an access array item by index in handlebars?
I am trying to specify the index of an item in an array within a handlebars template:
{
people: [
{"name":"Yehuda Katz"},
{"name":"Luke"},
{"name":"Naomi"}
]
}
using this:
<ul id="luke_should_be_here">
{{people[1].name}}
</ul>
If the above is not possible, how would I write a helper that could access a spefic item within the array?
Solution 1:
Try this:
<ul id="luke_should_be_here">
{{people.1.name}}
</ul>
Solution 2:
The following, with an additional dot before the index, works just as expected. Here, the square brackets are optional when the index is followed by another property:
{{people.[1].name}}
{{people.1.name}}
However, the square brackets are required in:
{{#with people.[1]}}
{{name}}
{{/with}}
In the latter, using the index number without the square brackets would get one:
Error: Parse error on line ...:
... {{#with people.1}}
-----------------------^
Expecting 'ID', got 'INTEGER'
As an aside: the brackets are (also) used for segment-literal syntax, to refer to actual identifiers (not index numbers) that would otherwise be invalid. More details in What is a valid identifier?
(Tested with Handlebars in YUI.)
2.xx Update
You can now use the get
helper for this:
(get people index)
although if you get an error about index needing to be a string, do:
(get people (concat index ""))
Solution 3:
{{#each array}}
{{@index}}
{{/each}}