2013-05-25 14 views
6

Si verificano problemi durante il tentativo di randomizzare l'ordine degli oggetti in una raccolta.Backbone.js Come mescolare gli elementi all'interno di una raccolta

Ecco il codice che ho provato:

console.log(this.collection); 
shuffled = this.collection.shuffle(); 
console.log(shuffled); 

Ed ecco l'output della console (con una collezione di prova con 3 elementi):

child {models: Array[3], length: 3, _byId: Object, url: "/myurl/myid", _listenerId: "l7"…} 
_byId: Object 
_events: Object 
_idAttr: "id" 
_listenerId: "l7" 
length: 3 
models: Array[3] 
__proto__: Surrogate 

[child, child, child] 
0: child 
1: child 
2: child 
length: 3 
__proto__: Array[0] 

Come si può vedere, la collezione è non viene mischiato correttamente, ma sta creando un nuovo oggetto inutilizzabile pieno di bambini fastidiosi.

Tutto quello che sto tentando di fare è randomizzare l'ordine in cui i modelli appaiono nella raccolta prima di passarlo a una vista per la visualizzazione (sto creando un pulsante chiamato "randomize" che ha bisogno di randomizzare la visualizzazione del articoli nella collezione). Ho pensato che sarebbe stato un compito facile, ma a questo punto sto considerando di creare un modello completamente nuovo e di fare lo shuffle sul server.

Qualsiasi aiuto è molto apprezzato!

+0

Se si desidera randomizzare la vista, perché inserire il codice nella raccolta e non la vista? –

+0

Il codice è incapsulato in una vista, ho solo mostrato le parti correlate sopra. La raccolta è casuale, quindi la vista aggiornata in base alla raccolta casuale e salvata. – mgee245

risposta

8
console.log(this.collection); 
this.collection.reset(this.collection.shuffle(), {silent:true}); 
console.log(this.collection); 
+0

Perfetto! Questo ha fatto il trucco ... Vado a dare un'occhiata alla funzione .reset ora. Grazie molto! – mgee245

+0

Questo è fantastico. Vorresti che questo fosse il comportamento predefinito dell'implementazione di Backbone di _.shuffle – SimplGy

Problemi correlati