【问题标题】:assemble/handlebars: define data context for a templateassemble/handlebars:为模板定义数据上下文
【发布时间】:2014-02-25 18:53:37
【问题描述】:

在 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]);
});

虽然没有错误,但没有显示&lt;p&gt;

为了完整起见,这里是我的组装选项:

Gruntfile.js

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

【问题讨论】:

    标签: handlebars.js assemble


    【解决方案1】:

    我遇到了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}}
    

    我仍然没有回答这个问题,因为我想知道我对助手做错了什么。

    【讨论】:

    • 是的,助手和部分在一起。但是,我认为这也可能是一个插件的用例。
    猜你喜欢
    • 2016-06-05
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 2014-06-01
    相关资源
    最近更新 更多