2013-05-25 11 views
6

Mam problemy podczas próby losowej kolejności obiektów w kolekcji.Backbone.js Jak przetasować elementy w kolekcji

Oto kod, który próbowałam:

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

A oto wyjście konsoli (przy użyciu zbiór testowy z 3 pozycji):

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] 

Jak widać, kolekcja jest nie jest właściwie tasowane, zamiast tego tworzy nowy, niepotrzebny obiekt pełen brzydkich dzieci.

Wszystko, co próbuję zrobić, to losowa kolejność, w jakiej modele pojawiają się w kolekcji przed przekazaniem jej do widoku do wyświetlenia (Tworzę przycisk o nazwie "randomize", który musi losowo wyświetlać przedmioty w kolekcji). Myślałem, że to łatwe zadanie, ale w tym momencie rozważam właśnie stworzenie zupełnie nowego modelu i przetasowanie na serwerze.

Każda pomoc jest bardzo doceniana!

+0

Jeśli chcesz wybrać losowo widok, dlaczego umieścić kod w kolekcji, a nie w widoku? –

+0

Kod jest enkapsulowany w widoku, pokazałem tylko powiązane części powyżej. Kolekcja jest wybierana losowo, a następnie aktualizowana na podstawie kolekcji losowej, a także zapisana. – mgee245

Odpowiedz

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

Idealny! To sprawiło, że ... przejdę teraz do funkcji .reset. Wielkie dzięki! – mgee245

+0

To jest świetne. Chciałbym, żeby to było domyślne zachowanie _.shuffle w Backbone – SimplGy