在每个中更改部分汇编

时间:2014-08-14 10:14:35

标签: gruntjs yaml assemble

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

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,等等。这是可能吗?或者我接近这一切都错了吗?

任何帮助都会很棒!

2 个答案:

答案 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}}