Handlebars.js: @ partial-ブロックが不明瞭になるか、バグをレンダリングする

作成日 2016年01月12日  ·  5コメント  ·  ソース: 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

最も参考になるコメント

@morgondag同様の問題があり、ifステートメントを使用して解決しました。

{{#if @partial-block}}
  {{> @partial-block }}
{{/if}}

あなたがすでにそれを解決したことを願っています:)

全てのコメント5件

テンプレートを直接レンダリングする場合、部分ブロックは発生しません。 部分ブロックは、テンプレートが部分としてレンダリングされる場合にのみ使用できます。つまり、 {{#> template}}this block{{/template}}

@kpdeckerなので、handelbarsapiを使用して部分ブロックでテンプレートをコンパイルする方法はありません???

@partial-block変数のように振る舞うべきではありませんか? それらが定義されていない場合、それらは印刷されません。

翡翠はそれを同じように扱います。

@morgondag同様の問題があり、ifステートメントを使用して解決しました。

{{#if @partial-block}}
  {{> @partial-block }}
{{/if}}

あなたがすでにそれを解決したことを願っています:)

@frederfredあなたがそのコメントをしてからしばらく経ちました。 しかし、あなたの例はテストケースでカバーされていないことに気づきました。 私はそれがそのように機能するのは偶然だと思います(コンパイルされたpartial-block部分が実行コンテキストのdataオブジェクトに格納されているため、機能するだけです。

このコメントに対して非常に多くのthumbs-upを受け取ったので、ここにその例のテストケースを追加することをお勧めし

誰かがそのテストを書きたいのなら、私はPRを受け入れます。

このページは役に立ちましたか?
0 / 5 - 0 評価