使用assemble我实际上遇到了一个我无法解决的问题。
我在YAML front matter部分定义了一堆widgets
,并将{{> aside}}
部分包括在内。直到这里一切都按预期工作!
我现在要做的是获取列表小部件并在旁边模板中呈现我的部分内容。但无论如何它没有按预期工作。
的src /模板/布局/布局default.hbs
---
layout: src/templates/layouts/layout-default.hbs
widgets:
- widget_link-list
- widget_welcome-message
---
<section role="main">
<h1>Template TwoCol</h1>
{{> body }}
</section>
<aside role="complementary">
{{> aside}}
</aside>
的src /模板/分音/ aside.hbs
{{#each widgets}}
{{.}}
{{/each}}
使用{{.}}
将我上面定义的列表打印为字符串。但是,如果我尝试{{> .}}
这个,控制台会发出以下警告:
警告:部分。无法找到使用--force继续。
答案 0 :(得分:5)
通过创建可以从任何Handlebars模板调用的自定义帮助程序,我找到了一种方法。现在我可以使用{{renderPartial 'partialName' context}}
。
在我的模板中:
var aside = ['my-widget-a','my-widget-b','my-widget-x'];
{{#each aside}}
{{renderPartial this ../this}}
{{/each}}
Javascript模块
module.exports.register = function (Handlebars, context) {
Handlebars.registerHelper("renderPartial", function (name) {
var fn,
template = Handlebars.partials[name];
if (typeof template !== 'Function') {
// not compiled, so we can compile it safely
fn = Handlebars.compile(template);
} else {
// already compiled, just reuse it
fn = template;
}
var output = fn(context).replace(/^\s+/, '');
return new Handlebars.SafeString(output);
});
};