2015-05-03 15 views
5

Con il motore di template dot.js come si scorre un oggetto? Nell'esempio seguente, come si esegue il loop sull'oggetto "msg"?dot.js loop attraverso l'oggetto

{ 
    "msg": { 
     "1": { 
      "a": "a1" 
     }, 
     "2": { 
      "b": "b2" 
     } 
    } 
} 

risposta

6

Dall'esempio sulla the website, sembra come se si dovrebbe essere in grado di fare:

{{ for(var prop in it) { }} 
<div>{{=prop}}</div> <!-- Prints "msg" --> 
    {{ for(var msgProp in it[prop]) { }} 
    <div>{{=msgProp}}</div> <!-- Prints "1" and "2" --> 
     {{ for(var numProp in it[prop][msgProp]) { }} 
     <!-- Prints "a: a1" and "b: b1" --> 
     <div>{{=prop}}: {{=it[prop][msgProp][numProp]}}</div> 
     {{ } }} 
    {{ } }} 
{{ } }} 

Tuttavia si consiglia di simplifiy quell'oggetto un po 'con JavaScript prima, prima di passarlo al il modello per facilitare l'iterazione.

+1

L'ho trovato leggermente più leggibile (anche se immagino meno interoperabile con i browser più vecchi) per utilizzare invece Object.keys. Taglia su tutte le strane nidificazione delle parentesi. Quindi qualcosa come '{{~ Object.keys (it): firstGroup}} ... {{~}}' –

0

La cosa migliore da fare sarebbe in primo luogo convertire msg in un array. È molto più facile iterare in questo modo. Successivamente, usa solo jQuery's $.each().