1

我刚开始使用 assemble,我目前有以下代码:

默认.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.hbs 部分,依此类推。这是可能吗?还是我接近这一切都错了?

任何帮助都是极好的!

4

2 回答 2

0

我相信布局是 YML 中的保留字,因为您可以为每个页面指定特定的布局。您可能想尝试重命名值布局并输入部分的全名,例如 double.hbs

我自己没有尝试过,所以不能100%确定。

于 2014-08-15T15:52:20.913 回答
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}}
于 2014-08-15T15:53:04.267 回答