diff options
author | Yehuda Katz <wycats@gmail.com> | 2012-07-05 22:43:50 -0700 |
---|---|---|
committer | Yehuda Katz <wycats@gmail.com> | 2012-07-05 22:43:50 -0700 |
commit | 5e8be14d78f87e73878e4d29013482f7daff9d8a (patch) | |
tree | cc7067b86bcce7a54842569e98f3d526a2225a62 /lib | |
parent | 72e05d623c07cc3a812528d52fb6d325134efee4 (diff) | |
download | handlebars.js-5e8be14d78f87e73878e4d29013482f7daff9d8a.zip handlebars.js-5e8be14d78f87e73878e4d29013482f7daff9d8a.tar.gz handlebars.js-5e8be14d78f87e73878e4d29013482f7daff9d8a.tar.bz2 |
Add support for @index in #each
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); |