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)
Vous n'aurez pas de bloc partiel si vous effectuez le rendu du modèle directement. Les blocs partiels ne sont disponibles que lorsqu'un modèle est rendu en tant que partiel, c'est- {{#> template}}this block{{/template}}
dire
@kpdecker donc il n'y a aucun moyen d'utiliser l'API du guidon pour compiler un modèle avec un bloc partiel ???
Les @partial-block
ne devraient-ils pas se comporter comme des variables ? S'ils ne sont pas définis, ils ne sont pas imprimés.
jade le gère de la même manière.
@morgondag J'ai eu un problème similaire et je l'ai résolu en utilisant une instruction if :
{{#if @partial-block}}
{{> @partial-block }}
{{/if}}
J'espère que vous l'avez déjà résolu :)
@frederfred Cela fait un moment que vous n'avez pas fait ce commentaire. Mais j'ai remarqué que votre exemple n'est pas couvert par un cas de test. J'appellerais cela une coïncidence si cela fonctionne comme ça (cela ne fonctionne que parce que le partial-block
-partial compilé est stocké dans l'objet data
du contexte d'exécution.
Puisque vous avez reçu tant de thumbs-up
pour ce commentaire, je suggère que nous ajoutions un cas de test pour cet exemple ici .
J'accepterais un PR si quelqu'un veut passer ce test.
Commentaire le plus utile
@morgondag J'ai eu un problème similaire et je l'ai résolu en utilisant une instruction if :
J'espère que vous l'avez déjà résolu :)