汇编/把手:定义模板的数据上下文

时间:2014-02-02 06:42:03

标签: handlebars.js assemble

在汇编中我想定义一个数据层次结构,然后在一个模板中处理数据的子集,如何实现?

实施例

stages.yaml

stages:
    stage1:
        goodies:
          - some
          - data
    stage2:
        goodies:
          - more
          - data

然后像这样定义数据子集:

index.hbs

{{#withStage stage1}}
    {{#each goodies}}
        <p>{{this}}</p>
    {{/each}}
{{/withStage}}

我尝试注册以下帮助:

helpers.js

Handlebars.registerHelper('withStage', function(context, options){
    return options.fn(this.stages[context]);
});

但是虽然没有错误,但没有显示<p>

为了完整性,这是我的汇编选项:

Gruntfile.js

    assemble: {
        options: {
            layout: "src/layouts/default.hbs",
            flatten: true,
            data: 'src/data/*.yaml',
            helpers: ['./helpers.js'],
        },

1 个答案:

答案 0 :(得分:2)

我遇到了partials的概念,这似乎是解决我的“设计问题”的方法:

options.partials添加到了 的 Gruntfile.js

    assemble: {
        options: {
            ...
            data: 'src/data/*.yaml',
            partials: ['src/partials/*.hbs' ],
            ...
        },

并将 goodies.hbs 添加到src / partials中并将其添加到
index.hbs

{{#each stages.stage1}}
  {{> goodies}}
{{/each}}

我仍然把这个问题保持开放,因为我想知道我对助手做错了什么。