3

我有如下 JSON 字符串

{
  Red:10,
  Green: 0
}

所以我想显示以下行 10 次(如 Red: 10 )

<img src="img/red.png">

我怎样才能使用 Mustache 做到这一点?

我试过了

{{# Red}}
<img src="img/red.png">
{{/ Red}}

但它不工作

4

2 回答 2

0

从这个页面: http: //mustache.github.io/mustache.5.html

如果person键存在且具有非 false 值,则井号和斜线之间的 HTML 将被渲染并显示一次或多次。

当值为非空列表时,块中的文本将针对列表中的每个项目显示一次。块的上下文将被设置为每次迭代的当前项。通过这种方式,我们可以遍历集合。

这意味着您需要 {# Red} 来引用包含 10 个项目的列表才能这样做。似乎没有一种简洁的方式来表示 n 个项目的列表,所以你最好将你的 JSON 修改为类似

{
  Red: [
    { "value": "1" },
    { "value": "2" },
    ...
    { "value": "10" },
  ]
  Green: 0
}

我不确定,但您可能还需要红色和绿色的引号。取决于您如何加载 JSON。

小胡子并不是真的适合做这样的事情。毕竟,它是无逻辑的模板。您应该考虑使用 Javascript 执行此操作。您可以考虑使用把手来使用 Mustache 和 Javascript。

于 2013-06-24T01:37:43.167 回答
0

您正在尝试做的事情:您想像 PHP 一样使用无逻辑的Mustache。

但它比 PHP 少。它不提供整个超文本预处理器语言的功能。这只是一个模板语法,当然不是图灵完整的。

所以你不能写这样的循环。或者,您可以遍历一个数组,例如:

这个:

{
  "musketeers": ["Athos", "Aramis", "Porthos", "D'Artagnan"]
}

和这个:

{{#musketeers}}
* {{.}}
{{/musketeers}}

给你这个:

* Athos
* Aramis
* Porthos
* D'Artagnan

但是类似的服务提供了这个功能。使用EJS,这是可能的:

<% for(var j = 0; j < 10; j++){ %>
    <img src="pic<%= j %>.png" />
<% } %>
于 2018-12-26T20:07:11.817 回答