我刚开始使用汇编,目前我有以下代码:
default.hbs:
{{#each default.articles}}
{{> layout }}
{{/each}}
和default.yml:
articles:
- article:
title: Test 1
image: image_path
description: test 1
reamore: link
color: FFF
layout: single
- article:
title: Test 2
image: image_path
description: test 2
reamore: link
color: 000
layout: double
如何使用yml数据中的布局来定义要使用的部分?
所以例如如果yml中的布局是double,则需要加载double.hbs partial,等等。这是可能吗?或者我接近这一切都错了吗?
任何帮助都会很棒!
答案 0 :(得分:0)
我认为布局是YML中的保留字,因为您可以为每个页面指定特定的布局。您可能想尝试重命名值布局并输入部分的全名,例如double.hbs
我没有自己尝试过,所以不能百分百肯定。
答案 1 :(得分:0)
在Handlebars中,您无法动态选择部分,但您可以创建一个帮助程序来执行此操作:
Handlebars.registerHelper('partial', function (key) {
var partial = Handlebars.partials[key];
if (partial) {
var fn = Handlebars.compile(partial);
var tmpl = fn(this);
return new Handlebars.SafeString(tmpl);
}
throw new Error('Partial ' + key + ' is not registered with Handlebars');
});
然后使用帮助器:
{{#each default.articles}}
{{partial this.layout}}
{{/each}}