Handlebars.js: @ bloqueio parcial não claro ou bug de renderização

Criado em 12 jan. 2016  ·  5Comentários  ·  Fonte: handlebars-lang/handlebars.js

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)

1144

Comentários muito úteis

@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 :)

Todos 5 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações