2015-12-24 22 views
6

Perché c'è una differenza traJADE: differenza tra e ogni

- for(var user in users) { 
    p= user //output: user1 
- }; 

e

each user in users 
    p= user //output: [object Object] 

secondo le http://jade-lang.com, sono aliasses, quindi perché fare hanno un output diverso?

Elenco degli utenti (JSON-formato)

users = { 
    "user1": { 
     "firstname": "John", 
     "lastname": "Doe" 
    }, 
    "user2": { 
     "firstname": "Jane", 
     "lastname": "Roe" 
    } 
} 
+0

Penso che abbia qualcosa a che fare con il trattino, ma non sono sicuro –

+0

@ A: nella documentazione di http://jade-lang.com, stanno dicendo che per e ciascuno sono alias, ma io penso di averlo risolto (vedi la mia risposta sotto) La mia risposta è corretta? –

risposta

1

Finalmente ho trovato una soluzione che funziona, ho dovuto usare value, index altrimenti un oggetto è stato restituito

each value, index in users 
    li= index //output: user1 
0

Fanno la stessa cosa, ma for è il modo di javascript per farlo e each è il modo di jade.

In Jade, è possibile inserire un - e iniziare a scrivere javascript, for o while o qualsiasi altra cosa.

D'altra parte, jade conosce la parola chiave each e sullo sfondo lo traduce in un ciclo per te.

E 'un po' diverso perché each user in users si traduce in qualcosa di simile a

for (var key in users) { 
    var user = users[key]; 
    // the rest of the code 

Quindi, in questo caso, user sarebbe l'oggetto, non solo la chiave, come for itera JavaScript consegna le chiavi nell'oggetto.

+0

Ok, questo ha senso, almeno se hai ragione (perché qualcuno ha votato la tua risposta) –

+0

I * am * giusto. Puoi testarlo da solo su jade-lang.com e vedere. Non so perché qualcuno avrebbe down-vote questo :) –

+0

un'altra domanda: il mio insegnante ha usato questo ciclo: ogni utente in users.list ma non so come usare users.list, continua a dare errori –

0

Non stai usando Jade's for, ma Javascript.

Quello che segue è equivalente alla versione each:

for user in users 
    p= user 

Nel tuo caso, a causa del -, si sta utilizzando propria versione di Javascript di for, che itera sui chiavi di un oggetto e non oltre i suoi valori.

+0

Non è possibile scrivere in questo modo .. dà il seguente errore: 'Impossibile leggere la proprietà 'length' di undefined' –

+0

@NickSpriet Sembra che funzioni solo sugli array. Dove hai letto erano alias? Non riesco a trovarlo nei documenti. – Darkhogg

+0

http://jade-lang.com/reference/iteration/ è l'ultima frase in "ciascun capitolo" (ho realizzato printcreen per te: http://prntscr.com/9i8h68) –