diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/handlebars/base.js | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/handlebars/base.js b/lib/handlebars/base.js index e1b9476..efc3093 100644 --- a/lib/handlebars/base.js +++ b/lib/handlebars/base.js @@ -56,13 +56,27 @@ Handlebars.registerHelper('blockHelperMissing', function(context, options) { } }); +Handlebars.K = function() {}; + +Handlebars.createFrame = Object.create || function(object) { + Handlebars.K.prototype = object; + var obj = new Handlebars.K(); + Handlebars.K.prototype = null; + return obj; +}; + Handlebars.registerHelper('each', function(context, options) { var fn = options.fn, inverse = options.inverse; - var ret = ""; + var 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++) { - ret = ret + fn(context[i]); + if (data) { data.index = i; } + ret = ret + fn(context[i], { data: data }); } } else { ret = inverse(this); |