使用Mustache迭代对象列表

时间:2014-06-13 10:10:21

标签: javascript jquery mustache

好的,所以我有一个对象列表(带有未知键),如下所示:

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

有什么方法可以迭代数组并获得不同的“键”值:

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

这只打印出[object Object]

有什么想法吗?

2 个答案:

答案 0 :(得分: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

如果人员密钥存在且不是null,undefined或false,并且不是空列表,则该块将被渲染一次或多次。

当值为列表时,将为列表中的每个项呈现块一次。块的上下文设置为每次迭代的列表中的当前项。通过这种方式,我们可以循环收集。

查看:

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

模板:

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

参考this

答案 1 :(得分: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)
      })    
  });
});