2014-06-13 70 views
1

确定对象的名单,所以我有对象的列表(未知键),像这样:迭代使用小胡子

{"Subtype": 
    {"gender":"m"}, 
    {"number":"pl"} 
} 

有什么办法,我可以迭代这个数组并同时获得不同“键”值:

{{#Subtype}} 
    {{#.}} 
      <li>{{.}}</li> 
    {{/.}} 
{{/Subtype}} 

这只是打印出[object Object]

任何想法?

回答

1

我已经通过JavaScript完成了一些工作,并在Mustache中实现。

注:代码是不是纯粹的小胡子

JS代码

var mustacheFormattedData = { 
    'value': [] 
}; 

for (var row in tableRows) { 
    if (tableRows.hasOwnProperty(row)) { 
     var obj = tableRows[row] 
     for (var prop in obj) { 
      if (obj.hasOwnProperty(prop)) { 
       console.log(prop) 
       mustacheFormattedData['value'].push({ 
        'value': obj[prop] 
       }); 
      } 
     } 
    } 
} 

JSFiddle

如果对方键存在并且不为空,未定义或假的,是不是空白列表块将呈现一次或多次。

当该值是一个列表时,该块为列表中的每个项目呈现一次。该块的上下文被设置为列表中的每个迭代的当前项目。通过这种方式,我们可以遍历集合。

查看:

{ 
    "stooges": [ 
    { "name": "Moe" }, 
    { "name": "Larry" }, 
    { "name": "Curly" } 
    ] 
} 

模板:

{{#stooges}} 
<b>{{name}}</b> 
{{/stooges}} 

参考this

+0

OK,我的观点是:如果什么*我不知道*有'name'字段的条目吗?我将如何回应“Moe”,“Larry”,“Curly”? –

1

试试这个:

var data ={"Subtype":[ 
    {"gender":"m"}, 
    {"number":"pl"}] 
}; 
$.each(data, function(key, val) { 
    console.log('key'); 
    console.log(key); 
    console.log('val'); 
    console.log(val); 
    $.each(this, function(k, v) { 
    /// do stuff 
     console.log('k = '+k+ ' v = '+v) 
     console.log(v) 
     $.each(this, function(k1, v1) { 
      console.log('k1 = '+k1+ ' v1 = '+v1) 
     })  
    }); 
});