2014-06-13 74 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) 
     })  
    }); 
});