Gruntjs 在每个组件中更改部分

Gruntjs 在每个组件中更改部分,gruntjs,yaml,assemble,Gruntjs,Yaml,Assemble,我刚开始使用Assembly,目前有以下代码: default.hbs: {{#each default.articles}} {{> layout }} {{/each}} 和default.yml: articles: - article: title: Test 1 image: image_path description: test 1 reamore: link color: FFF lay

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

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,以此类推。这有可能吗?还是我的做法完全错了


任何帮助都会很棒

我认为布局在YML中是一个保留字,因为您可以为每个页面指定特定的布局。您可能需要尝试重命名值布局,并输入部分eg double.hbs的全名


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

在车把中,您不能动态选择部分,但您可以创建一个帮助器来执行此操作:

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

layout
仅当它位于页面中front matter对象的根目录下或在主选项上设置时才使用。