与胡子的“倒置选择”相反

时间:2014-06-04 15:46:17

标签: javascript template-engine mustache

我很好奇Mustache是​​否具有与“Inverted Selection”语法{{^foo}}相反的语法功能。

假设我们有数据:

{
  people: [
    { name: "Alice" },
    { name: "Bob" },
    { name: "Mallory" }
  ]
}

模板:

<h3>People</h3>
<ul>
  {{#people}}
    <li>{{name}</li>
  {{/people}}
</ul>

如果我们想在没有人的情况下添加项目,我们只需添加以下内容:

{{^people}}<li>No people</li>{{/people}}

但就我而言,如果没有人,我不想展示<h3><ul>

{{?people}}这样的语法(代表{{^people}}的相反/布尔否定)对于这种情况是完美的,但是存在吗?


另一种选择是预处理数据,添加值

has_people = Boolean(people.length)

并使用{{#has_people}},但这似乎是违反直觉的,反对逻辑少(我轻易使用这个术语)范例。

1 个答案:

答案 0 :(得分:0)

最简单的解决方案似乎是自己添加功能。

我已经将Mustache.js存储库与引入{{? data }}选择器所需的更改分开。在英语中,它可以被理解为“当为真时,或data内有项目。”

Repository | Diff 1 | Diff 2