将变量附加到把手中的部分名称(胡子)

时间:2013-05-23 12:55:07

标签: handlebars.js mustache gruntjs

我正在使用带有grunt汇编的把手,比如我有一个名为'page'的数据字段的页面,我可以将该数据字段传递给部分名称(在另一部分中)吗?

例如:

  • 页面的“page”字段的值为“dashboard-one”
  • 包含标记的部分“侧边栏”调用另一个部分{{ sidebar-*dashboard-one* }},其中信息中心 - 一个是从页面传入的变量
  • 这意味着需要侧边栏的每个页面都可以有一个名为“sidebar-dashboard-one”,“sidebar-dashboard-two”等相关部分

1 个答案:

答案 0 :(得分:1)

您不能将变量作为部分名称通常方式传递。有两种可能的解决方案:

1)如果您知道所有可能的名称,则可以静态生成平面模板并根据需要使用它。

初始数据:

{
    "names": [
        { "name": "dashboard-one" },
        { "name": "dashboard-two" }
    ]
}

静态模板:

{{#each names}}
    \{{#if name.{{name}} }}
        \{{> sidebar-{{name}} }}
    \{{/if}}
{{/each}}

将产生:

{{#if dashboard-one }}
    {{> sidebar-dashboard-one }}
{{/if}}

{{#if dashboard-two }}
    {{> sidebar-dashboard-two }}
{{/if}}

然后你传递名字'仪表板 - 一个'在模板上下文中:

{ "name": "dashboard-one" }

并执行部分sidebar-dashboard-one

2)编写自定义助手。 Handlebars内部使用方法Handlebars.VM.invokePartial来调用partials。 See, how it works