diff options
-rw-r--r-- | lib/handlebars/base.js | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/lib/handlebars/base.js b/lib/handlebars/base.js index d22eb40..03f41ef 100644 --- a/lib/handlebars/base.js +++ b/lib/handlebars/base.js @@ -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; }); |