如何使用带有YAML前端物品的把手#each助手

时间:2013-09-01 19:47:11

标签: yaml handlebars.js assemble

我正在使用assemble.io自动化我的前端开发,并希望使用YAML前端内容来创建一个简单的导航菜单。

我想要实现的HTML是:

<li><a href="#link1">Link1</a></li>
<li><a href="#link2">Link2</a></li>

我认为正确的把手标记是这样的:

      {{#each sublinks}}
      <li><a href="#{{section}}">{{section}}</li>
      {{/each}}

但是什么是正确的YFM?我已经开始使用它,但知道语法不正确:

---
sublinks:
  - section: link1, link2
---

2 个答案:

答案 0 :(得分:9)

对于这样的模板:

{{#each sublinks}}
<li><a href="#{{section}}">{{section}}</li>
{{/each}}

您需要这样的数据结构:

sublinks = [
    { section: 'link1' },
    { section: 'link2' },
    //...
]

在YAML中,看起来像是:

sublinks:
  - section: link1
  - section: link2

你也应该能够使用这个YAML:

sublinks:
  - link1
  - link2

使用此模板:

{{#each sublinks}}
<li><a href="#{{.}}">{{.}}</li>
{{/each}}

您的YAML对应于这样的数据结构:

sublinks = [
    { section: 'link1, link2' }
]

除非您想使用Handlebars帮助器拆分'link1, link2'字符串,否则这并不是非常有用。

答案 1 :(得分:3)

添加@ mu&#39答案很棒,你也可以这样做:

鉴于此YAML前言:

---
sublinks:
  - href: link/to/foo
    text: Foo Text
  - href: link/to/bar
    text: Bar Text
  - href: link/to/baz
    text: Baz Text
---

您的模板如下所示:

{{#each sublinks}}
  <li><a href="#{{href}}">{{text}}</a></li>
{{/each}}

请注意,YAML规范还允许使用更像JavaScript对象的语法:

---
sublinks:
  - {href: link/to/foo, text: Foo Text}
  - {href: link/to/bar, text: Bar Text}
  - {href: link/to/baz, text: Baz Text}
---