0
我想傳遞和編譯我的自定義塊幫助中的參數。我發現params在一個哈希對象內,但是我怎樣才能將它們編譯成部分?通過句柄傳遞變量blockhelper
我想要參數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>
叫我blockhelper
{{#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}}
UPTADE
,並有可能從我的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]的參數是未編譯,[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>
WOW謝謝你;)的工作,但沒有辦法動態地添加參數?因爲我也想使用這個blockhelper作爲像我的fakescroller,dropdown等其他部分的generell助手。.. –