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)
Você não terá um bloco parcial se estiver renderizando o modelo diretamente. Blocos parciais só estão disponíveis quando um modelo é renderizado como parcial, ou seja, {{#> template}}this block{{/template}}
@kpdecker então não há como usar a API do handelbars para compilar um template com um bloco parcial ???
@partial-block
s não deveria se comportar como variáveis? Se não estiverem definidos, não serão impressos.
jade lida com isso da mesma maneira.
@morgondag Tive um problema semelhante e resolvi-o usando uma instrução if:
{{#if @partial-block}}
{{> @partial-block }}
{{/if}}
Espero que você já tenha resolvido :)
@frederfred Já faz um tempo desde que você fez esse comentário. Mas percebi que seu exemplo não é coberto por um caso de teste. Eu chamaria de coincidência que funcione assim (só funciona, porque a partial-block
-parcial compilada está armazenada no objeto data
do contexto de execução.
Como você recebeu tantos thumbs-up
por este comentário, sugiro que adicionemos um caso de teste para esse exemplo aqui .
Eu aceitaria um PR se alguém quiser escrever esse teste.
Comentários muito úteis
@morgondag Tive um problema semelhante e resolvi-o usando uma instrução if:
Espero que você já tenha resolvido :)