Implemented ability to iterate over objects, ala for-in.

Also added the 'key' key to looped objects.
My goal is to make this {{@key}}, but am still working on it.
I would also like to unobtrusively make @key or @index work for arrays.
This commit is contained in:
Ross Hadden
2012-07-03 16:53:26 -04:00
committed by Mike Sherov
parent 3212325173
commit 9589ab8949
+19 -6
View File
@@ -64,20 +64,33 @@ Handlebars.createFrame = Object.create || function(object) {
Handlebars.registerHelper('each', function(context, options) {
var fn = options.fn, inverse = options.inverse;
var ret = "", data;
var i = 0, ret = "", data;
if (options.data) {
data = Handlebars.createFrame(options.data);
}
if(context && context.length > 0) {
for(var i=0, j=context.length; i<j; i++) {
if (data) { data.index = i; }
ret = ret + fn(context[i], { data: data });
if(context && typeof context === 'object') {
if(context instanceof Array){
for(var j = context.length; i<j; i++) {
if (data) { data.index = i; }
ret = ret + fn(context[i], { data: data });
}
} else {
for(var key in context) {
if(context.hasOwnProperty(key)) {
if(data) { data.key = key; }
ret = ret + fn(context[key], {data: data});
i++;
}
}
}
} else {
}
if(i === 0){
ret = inverse(this);
}
return ret;
});