4

我正在使用带有 grunt assemble 的车把,假设我有一个页面有一个名为“页面”的数据字段,我可以将该数据字段传递给一个部分的名称(在另一个部分中)吗?

例如:

  • 页面具有值为 'dashboard-one' 的 'page' 字段
  • 具有包装标记的部分“侧边栏”调用另一个部分{{ sidebar-*dashboard-one* }},其中dashboard-one是上面从页面传入的变量
  • 这意味着每个需要侧边栏的页面都可以有一个关联的部分,称为“sidebar-dashboard-one”、“sidebar-dashboard-two”等
4

1 回答 1

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

然后在模板上下文中传递名称“dashboard-one”:

{ "name": "dashboard-one" }

并得到部分sidebar-dashboard-one执行。

2)编写自定义助手。Handlebars 在内部使用方法Handlebars.VM.invokePartial来调用部分。看看,它是如何工作的。

于 2014-07-03T13:44:30.850 回答