2012-08-09 9 views
7

Eventuali duplicati:
Mustache JS Template with JSON CollectionMustache.js: iterare su una lista ricevuto tramite JSON

ho una risposta JSON come questo che voglio usare con Mustache.js:

[ 
    {"id": "1", "details": {"name": "X", "type":"Y" }}, 
    {"id": "2", "details": {"name": "aName", "type":"something" }} 
] 

Come si esegue iterare su questo utilizzando mustache.js?

+0

Non vedo come sia un duplicato. Né il titolo della domanda collegata è descrittivo, né esiste una risposta accettata. – Stealth

+0

La cosa divertente è che il post che questo è "un duplicato di" fa riferimento a questa domanda. – Carcigenicate

risposta

12

ho trovato un altro modo di fare questo che è abbastanza simile a Geert-Jan eccezione del fatto che non c'è bisogno di assegnare la matrice a un oggetto Javascript.

{{ #. }} 
    <p> {{ id }} </p> 
    <ul> {{#details}} 
     {{name }} 
     {{ type }} 
    {{/details}} 
    </ul> 
{{ /. }} 
+0

sì sì. Non sapevo che il punto funzionava anche su un oggetto di livello superiore. –

+0

Non riesco a farlo funzionare con I Can Haz. C'è qualcosa che mi manca? – streetlight

+0

Non riesco a farlo funzionare (sto usando I Can Haz). C'è qualcosa che mi manca, perché sarebbe fantastico! – streetlight

14

L'array stesso dovrebbe essere un valore in un oggetto più grande, in questo modo:

var obj = { 
    arr: [ 
    {"id": "1", "details": {"name": "X", "type":"Y" }}, 
    {"id": "2", "details": {"name": "aName", "type":"something" }} 
    ] 
} 

Poi si può fare:

{{#arr}} 
    my id: {{id}} 
{{/arr}} 

l'uso di {{}} #bla è effettivamente sovraccarico . Quando la proprietà su cui agisce è una matrice che verrà ripetuta. Quando la proprietà è un oggetto stesso, "entrerà" in quell'oggetto. Dato il tuo esempio:

{{#arr}} 
    my id: {{id}} <br/> 
    {{#details}} 
    and my name: {{name}} 
    {{/details}} 
{{/arr}} 
+2

Grazie per la risposta. Ho anche trovato un altro modo di farlo che potresti trovare più facile. Vedi sotto. – Stealth

+0

@ Geert-Jan grazie mi ha aiutato. Ho dovuto eseguire questa operazione: '$ ('. Some #selector'). Append (Mustache.render (someTemplateTpl, {arrayOfObjects: classObject.arrayOfJsons}));' quindi la matrice di oggetti denominata _arrayOfJsons_ all'interno della classe _classObject_ doveva essere assegnato come valore della proprietà _arrayOfObjects_ all'interno dell'oggetto. Ma prima, quando ho usato questo codice: '$ ('. Some #selector'). Append (Mustache.render (someTemplateTpl, classObject.arrayOfJsons));' non ha funzionato, il modello è stato reso parzialmente - solo le parti statiche in html, ma quelle dinamiche basate sulle proprietà di Json (cioè le dichiarazioni if-else like) non lo erano. Perché? – spaffy

Problemi correlati