Template.hbs
<div>
{{> @partial-block }}
</div>
Then Compile:
Handlebars.compile(fs.readFileSync("./template.hbs", "utf8"))({});
Èrror
/handlebars/runtime.js:266
throw new _exception2['default']('The partial ' + options.name + ' could not be found');
^
Error: The partial @partial-block could not be found
at Object.invokePartial (/handlebars/runtime.js:266:11)
at Object.invokePartialWrapper [as invokePartial] (/handlebars/runtime.js:68:39)
at Object.eval (eval at createFunctionContext (/handlebars/compiler/javascript-compiler.js:254:23), <anonymous>:6:28)
No tendrá un bloque parcial si está renderizando la plantilla directamente. Los bloques parciales solo están disponibles cuando una plantilla se representa como parcial, es decir, {{#> template}}this block{{/template}}
@kpdecker, por lo que no hay forma de usar la API de handelbars para compilar una plantilla con un bloque parcial.
¿No debería @partial-block
s comportarse como variables? Si no están definidos, no se imprimen.
jade lo maneja de la misma manera.
@morgondag Tuve un problema similar y lo resolví usando una declaración if:
{{#if @partial-block}}
{{> @partial-block }}
{{/if}}
Espero que ya lo hayas resuelto :)
@frederfred Ha pasado un tiempo desde que hiciste ese comentario. Pero noté que su ejemplo no está cubierto por un caso de prueba. Lo llamaría una coincidencia de que funcione así (solo funciona, porque el partial-block
-parcial compilado se almacena en el objeto data
del contexto de ejecución.
Dado que ha recibido tantos thumbs-up
por este comentario, sugeriría que agreguemos un caso de prueba para ese ejemplo aquí .
Aceptaría un PR si alguien quisiera escribir esa prueba.
Comentario más útil
@morgondag Tuve un problema similar y lo resolví usando una declaración if:
Espero que ya lo hayas resuelto :)