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)
テンプレートを直接レンダリングする場合、部分ブロックは発生しません。 部分ブロックは、テンプレートが部分としてレンダリングされる場合にのみ使用できます。つまり、 {{#> template}}this block{{/template}}
@kpdeckerなので、handelbarsapiを使用して部分ブロックでテンプレートをコンパイルする方法はありません???
@partial-block
変数のように振る舞うべきではありませんか? それらが定義されていない場合、それらは印刷されません。
翡翠はそれを同じように扱います。
@morgondag同様の問題があり、ifステートメントを使用して解決しました。
{{#if @partial-block}}
{{> @partial-block }}
{{/if}}
あなたがすでにそれを解決したことを願っています:)
@frederfredあなたがそのコメントをしてからしばらく経ちました。 しかし、あなたの例はテストケースでカバーされていないことに気づきました。 私はそれがそのように機能するのは偶然だと思います(コンパイルされたpartial-block
部分が実行コンテキストのdata
オブジェクトに格納されているため、機能するだけです。
このコメントに対して非常に多くのthumbs-up
を受け取ったので、ここにその例のテストケースを追加することをお勧めし
誰かがそのテストを書きたいのなら、私はPRを受け入れます。
最も参考になるコメント
@morgondag同様の問題があり、ifステートメントを使用して解決しました。
あなたがすでにそれを解決したことを願っています:)