diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/handlebars/compiler/compiler.js | 8 | ||||
-rw-r--r-- | lib/handlebars/vm.js | 8 |
2 files changed, 12 insertions, 4 deletions
diff --git a/lib/handlebars/compiler/compiler.js b/lib/handlebars/compiler/compiler.js index 427e0a5..4bc1f82 100644 --- a/lib/handlebars/compiler/compiler.js +++ b/lib/handlebars/compiler/compiler.js @@ -638,7 +638,13 @@ Handlebars.JavaScriptCompiler = function() {}; }, invokePartial: function(context) { - this.pushStack("self.invokePartial(" + this.nameLookup('partials', context, 'partial') + ", '" + context + "', " + this.popStack() + ", helpers, partials);"); + params = [this.nameLookup('partials', context, 'partial'), "'" + context + "'", this.popStack(), "helpers", "partials"]; + + if (this.options.data) { + params.push("data"); + } + + this.pushStack("self.invokePartial(" + params.join(", ") + ");"); }, assignToHash: function(key) { diff --git a/lib/handlebars/vm.js b/lib/handlebars/vm.js index 7f9a42e..ecb4ce3 100644 --- a/lib/handlebars/vm.js +++ b/lib/handlebars/vm.js @@ -46,16 +46,18 @@ Handlebars.VM = { }; }, noop: function() { return ""; }, - invokePartial: function(partial, name, context, helpers, partials) { + invokePartial: function(partial, name, context, helpers, partials, data) { + options = { helpers: helpers, partials: partials, data: data }; + if(partial === undefined) { throw new Handlebars.Exception("The partial " + name + " could not be found"); } else if(partial instanceof Function) { - return partial(context, {helpers: helpers, partials: partials}); + return partial(context, options); } else if (!Handlebars.compile) { throw new Handlebars.Exception("The partial " + name + " could not be compiled when running in vm mode"); } else { partials[name] = Handlebars.compile(partial); - return partials[name](context, {helpers: helpers, partials: partials}); + return partials[name](context, options); } } }; |