0
カスタムブロックヘルパーでパラメータを渡してコンパイルします。 paramsはハッシュオブジェクトの内部にあることがわかりましたが、どうすればそれらを部分的にコンパイルできますか?ハンドルバーを介して変数を渡すブロックヘルパー
私はPARAM flyoutClass
が私の部分的にコンパイルすることにしたいです。 ...
ハンドルバーは、私はすでにいくつかのことを試してみました
module.exports.register = function (Handlebars, context) {
Handlebars.registerHelper('injectHtml', function(name, options) {
console.log(options.hash); //yeah my param
var partial = Handlebars.partials[name];
var template = Handlebars.compile(partial);
//var template = Handlebars.compile(partial)(options.hash); *
var output = template({"body": options.fn(this)});
return new Handlebars.SafeString(output);
//return new Handlebars.SafeString(output(options.hash)); *
//return new Handlebars.SafeString(partial(output)); *
})
};
ヘルパーが、私は常にその警告を受けます
警告:文字列が
.hbsが
ファイル機能ではありません<div class="flyout {{flyoutClass}}">
<button>flyout-button</button>
<div class="flyout__content">
{{{body}}}
</div>
</div>
UPTADE
{{#injectHtml "flyout" flyoutClass='navigation__item'}}
<div class="wrapper">
<h3>Headline</h3>
<p>some copy</p>
<button>CTA</button>
</div
<div class="wrapper">
<h3>Headline</h3>
<p>some copy</p>
<button>CTA</button>
</div>
{{/injectHtml}}
私blockhelperを呼び出し、それは別の部分に自分のblockhelperからのparamを渡すことが可能ですか?
var output = template({
"addClass": options.hash.addClass,
"id": options.hash.id,
"body": options.fn(this)
});
私は "ID"
{{#injectHtml "flyout" flyoutClass='navigation__item'id='myUniqueID'}}
とまた私の部分のボタンで
<div class="flyout {{flyoutClass}}">
{{>button btn="icon-text" id="{{id}}"/*[1]*/ icon="arrow-down"label="klick me"}}
<div class="flyout__content" aria-labelledby="{{id}}"/*[2]*/>
{{{body}}}
</div>
</div>
しかし、[1]のparamがコンパイルされていない時に、それを使用して、この部分を拡張したいです、[2]うまく動作します。あなたが動的にするこのパラメータを意図しているため
<div class="flyout navigation__item">
<a href="#" id="{{id}}"/*[1]*/ aria-expanded="false">
<div class="flyout__content" aria-labelledby="myUniqueID"/*[2]*/>
//html content
</div>
</div>