Handlebars/Mustache - Is there a built in way to loop through the properties of an object?
Solution 1:
Built-in support since Handlebars 1.0rc1
Support for this functionality has been added to Handlebars.js, so there is no more need for external helpers.
How to use it
For arrays:
{{#each myArray}}
Index: {{@index}} Value = {{this}}
{{/each}}
For objects:
{{#each myObject}}
Key: {{@key}} Value = {{this}}
{{/each}}
Note that only properties passing the hasOwnProperty
test will be enumerated.
Solution 2:
It's actually quite easy to implement as a helper:
Handlebars.registerHelper('eachProperty', function(context, options) {
var ret = "";
for(var prop in context)
{
ret = ret + options.fn({property:prop,value:context[prop]});
}
return ret;
});
Then using it like so:
{{#eachProperty object}}
{{property}}: {{value}}<br/>
{{/eachProperty }}