2011-12-07 12 views
9

Quindi, sto imparando backbone.js e sto attualmente iterando su alcuni modelli in una vista con l'esempio di seguito. Il primo frammento funziona, quando non lo è l'altro underscore.js. Perché?Iterare oggetti con underscore.js

// 1: Working 
this.collection.each(function(model){ console.log(model.get("description")); }); 

// 2: Not working  
_.each(this.collection, function(model){ console.log(model.get("description")); }); 

Cosa sto sbagliando, perché non riesco a vederlo da solo?

+2

* succede * qualsiasi cosa *? Ci sono errori nella console? – Pointy

+0

No. # 2 esegue in silenzio senza alcun output alla console. – Industrial

risposta

22

this.collection è un'istanza mentre this.collection.each è un metodo che itera l'oggetto corretto sotto le copertine che è la proprietà .models di un'istanza di raccolta.

Con questo detto si può provare:

_.each(this.collection.models, function(model){ console.log(model.get("description")); }); 

che è completamente inutile come this.collection.each è una funzione che fa simile a:

function(){ 
return _.each.apply(_, [this.models].concat([].slice.call(arguments))); 
} 

Quindi si potrebbe anche usare this.collection.each; P

+1

Grazie per la spiegazione del motivo per cui non ha funzionato insieme alla soluzione! – Industrial

2

Inoltre, si potrebbe provare ...

_.each(this.collection.models, function(model){ 
    console.log(model.get("description")); 
}); 
Problemi correlati