diff options
Diffstat (limited to 'lib/handlebars/runtime.js')
-rw-r--r-- | lib/handlebars/runtime.js | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/handlebars/runtime.js b/lib/handlebars/runtime.js index fed72fb..de42752 100644 --- a/lib/handlebars/runtime.js +++ b/lib/handlebars/runtime.js @@ -194,7 +194,11 @@ export function wrapProgram(container, i, fn, data, declaredBlockParams, blockPa export function resolvePartial(partial, context, options) { if (!partial) { - partial = options.partials[options.name]; + if (options.name === '@partial-block') { + partial = options.data['partial-block']; + } else { + partial = options.partials[options.name]; + } } else if (!partial.call && !options.name) { // This is a dynamic partial that returned a string options.name = partial; @@ -209,6 +213,15 @@ export function invokePartial(partial, context, options) { options.data.contextPath = options.ids[0] || options.data.contextPath; } + let partialBlock; + if (options.fn && options.fn !== noop) { + partialBlock = options.data['partial-block'] = options.fn; + } + + if (partial === undefined && partialBlock) { + partial = partialBlock; + } + if (partial === undefined) { throw new Exception('The partial ' + options.name + ' could not be found'); } else if (partial instanceof Function) { |