循环胡子10次

时间:2013-06-24 01:03:18

标签: mustache

我有JSON字符串,如下所示

{
  Red:10,
  Green: 0
}

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

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

如何使用Mustache做到这一点?

我试过

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

但它不起作用

2 个答案:

答案 0 :(得分:0)

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

  

如果 person 键存在并且具有非false值,则pound和斜杠之间的HTML将呈现并显示一次或多次。

     

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

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

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

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

胡子并不是真正意义上做这样的事情。毕竟,它是无逻辑的模板。您应该考虑使用Javascript执行此操作。你可以考虑使用把手来使用带有Javascript的Mustache。

答案 1 :(得分:0)

您要尝试做的事情:您想像一样使用无逻辑的胡须。

但是它比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" />
<% } %>