Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save JosephSilber/3829688 to your computer and use it in GitHub Desktop.
Save JosephSilber/3829688 to your computer and use it in GitHub Desktop.
Handlebars.js helpers to iterate over objects
// HELPER: #key_value
//
// Usage: {{#key_value obj}} Key: {{key}} // Value: {{value}} {{/key_value}}
//
// Iterate over an object, setting 'key' and 'value' for each property in
// the object.
Handlebars.registerHelper("key_value", function(obj, options) {
var buffer = "",
key;
for (key in obj) {
if (obj.hasOwnProperty(key)) {
buffer += options.fn({key: key, value: obj[key]});
}
}
return buffer;
});
// HELPER: #each_with_key
//
// Usage: {{#each_with_key container key="myKey"}}...{{/each_with_key}}
//
// Iterate over an object containing other objects. Each
// inner object will be used in turn, with an added key ("myKey")
// set to the value of the inner object's key in the container.
Handlebars.registerHelper("each_with_key", function(obj, options) {
var context,
buffer = "",
key,
keyName = options.fn.hash.key;
for (key in obj) {
if (obj.hasOwnProperty(key)) {
context = obj[key];
if (keyName) {
context[keyName] = key;
}
buffer += options.fn(context);
}
}
return buffer;
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment