2013-06-24 104 views
10

我是新来的胡子,请多多包涵:)迭代通过JSON阵列胡子

我有一个数组在我的JSON

"prop":{"brands":["nike","adidas","puma"]} 

,如果我有这样的

{{#prop}} 
<b>{{brands}}</b> 
{{prop}} 
模板

,我想是这样的:

<b>nike</b> 
<b>adidas</b> 
<b>puma</b> 

我知道数组中的元素不是哈希键 - 值对,但是我想知道是否有胡须,我可以遍历元素。

谢谢!

回答

1

小胡子是无逻辑的,所以编写自己的迭代/循环是不可能的。很容易转换你的JSON。例如:

var json = '{"prop":{"brands":["nike","adidas","puma"]}}'; 
var obj = JSON.parse(json); 
var data = {brands: obj.prop['brands'].map(function(x){ return {name: x}; })}; 

给你一个data变量,它与模板的工作:

{{#brands}} 
    <b>{{name}}</b> 
{{/brands}} 
+0

谢谢,解析JSON之前似乎是最好的解决方案。 – Liang

29

这里是工作提琴:http://jsfiddle.net/Qa4UX/

基本上,你需要遍历品牌阵列。 因为你的阵列是生里面你必须引用的每个字符串,像这样没有对象:

{{#props}} 
    <ul> 
    {{#brands}} 
    <li> 
    {{#.}} 
     <b>{{.}}</b> 
    {{/.}} 
    </li> 
    {{/brands}} 
    </ul> 
{{/props}} 

您还可以找到更多的例子在这里:https://github.com/janl/mustache.js#mustachejs---logic-less-mustache-templates-with-javascript

+0

感谢您的答案保罗,我看到你的观点,并认为这将是一个解决方案,但我似乎无法得到的结果,当我点击“运行”,但一个非常好的解决方案,产生html结果的小提琴示例,谢谢! – Liang

+0

嗨。出于好奇:你没有看到jsfiddle中html框架中的列表吗? – peshkira

+1

Nope,

是我看到的,“Run”链接对它没有任何作用...... – Liang

14

这工作

{{#json.props.brands}} 
<h1>{{.}}</h1> 
{{/json.props.brands}} 

{{。}}在循环一个字符串数组时,a。可以用来引用列表中的当前项目。