This is what I'd like to do in Mustache.js but not seeing how with the documentation.
var view = {items:['Mercury','Venus','Earth','Mars']};
var template = "<ul> {{#items}}<li>{{i}} - {{.}}</li>{{/items}} </ul>";
var html = Mustache.to_html(template,view);
Desired output:
<ul>
<li>0 - Mercury</li>
<li>1 - Venus</li>
<li>2 - Earth</li>
<li>3 - Mars</li>
</ul>
Looking for a fast clean solution?
index
functionvar data = {
items: [{
name: Aliasghar
, grade: 19
}, {
name: Afagh
, grade: 20
}]
, index: function() {
return ++window['INDEX']||(window['INDEX']=0);
}
}
and your template could be like this:
{{#items}}
{{index}} -- {{name}} is {{grade}}
{{/items}}
We add a index: function(){}
to data and we use it as a normal function in template.
This function adds a key to the window
object which is available globally; then increases it one by one.
Please note that if you are using multiple templates one after another you need to either reset window['INDEX']
or change it's key to something else like window['YEKI_DIGE']
.
Another way of doing this is by adding a resetIndex
function. Here is the way:
var data = {
items: [{
name: Aliasghar
, grade: 19
}, {
name: Afagh
, grade: 20
}]
, index: function() {
return ++window['INDEX']||(window['INDEX']=0);
}
, resetIndex: function() {
window['INDEX']=null;
return;
}
}
and your template could be like this:
{{#items}}
{{index}} -- {{name}} is {{grade}}
{{/items}}
{{resetIndex}}
Inspired by this answer: https://stackoverflow.com/a/10208239/257479 from dave on In Mustache, How to get the index of the current Section