使用汇编我实际上坚持一个我无法自我解决的问题.
我widgets在YAML前端部分定义了一堆,并包括一部分{{> 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>
Run Code Online (Sandbox Code Playgroud)
SRC /模板/谐音/ aside.hbs
{{#each widgets}}
{{.}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
使用{{.}}打印我上面定义的列表作为字符串.但如果我尝试这样做{{> .}},控制台会丢弃以下警告:
警告:部分.无法找到使用--force继续.
我通过创建一个可以从任何Handlebars模板调用的自定义帮助程序找到了一种方法.现在我可以使用了{{renderPartial 'partialName' context}}.
在我的模板中:
var aside = ['my-widget-a','my-widget-b','my-widget-x'];
{{#each aside}}
{{renderPartial this ../this}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
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);
});
};
Run Code Online (Sandbox Code Playgroud)