覆盖小胡子部分值

时间:2015-03-16 21:17:00

标签: templates mustache overrides

如何获得此输出:

<h1>Colors</h1>
<li><strong>red</strong></li>
<li><a href="#Green">green</a></li>
<li><a href="#Blue">blue</a></li>

从这个模板:

<h1>{{header}}</h1>
{{#bug}}
{{/bug}}

{{#items}}
  {{#first}}
    <li><strong>{{name}}</strong></li>
  {{/first}}
  {{#link}}
    <li><a href="{{url}}">{{name}}</a></li>
  {{/link}}
{{/items}}

{{#empty}}
  <p>The list is empty.</p>
{{/empty}}

此数据:

{
  "header": "Colors",
  "first": true,
  "items": [
      {"name": "red", "first": true, "url": "#Red"},
      {"name": "green", "link": true, "url": "#Green"},
      {"name": "blue", "link": true, "url": "#Blue"}
  ],
  "empty": false
}

这样就不会覆盖第一个字段。

目前我得到了这个输出:

<h1>Colors</h1>
<li><strong>red</strong></li>
<li><strong>green</strong></li>
<li><a href="#Green">green</a></li>
<li><strong>blue</strong></li>
<li><a href="#Blue">blue</a></li>

我正在测试here

1 个答案:

答案 0 :(得分:2)

first键定义在两个级别:项目级别和根级别。

如果未在项目级别定义,则Mustache引擎会深入挖掘,并使用在根级别定义的引擎。这被称为Mustache上下文堆栈,您刚刚学会了它。

现在答案很简单,不是吗?为了防止Mustache引擎深入上下文堆栈并在根级别查找first,请确保在项目级别定义first 所有项目。对于除第一个项目之外的所有项目,将其设置为false