2013-05-25 18 views
6

Koleksiyondaki nesnelerin sırasını rasgele hale getirmeye çalışırken sorunlar yaşıyorum. İşte Backbone.js Koleksiyondaki öğeleri karıştırmak

denedim kod var:

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

Ve burada (3 öğelerle bir test koleksiyonunu kullanarak) konsol çıkış var: Gördüğünüz gibi

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] 

, Koleksiyon olduğunu düzgün şekilde karıştırılmamak yerine, sinir bozucu çocuklarla dolu yeni ve kullanışsız bir nesne yaratıyor.

Yapmaya çalıştığım tek şey, modellerin koleksiyonda görüntülenme sırasını görüntülemeden önce gösterme sırasını rastgele sıralamaktır ("randomize" adı verilen bir düğümü yaratıyorum. koleksiyondaki öğeler). Bunun kolay bir iş olacağını düşündüm, ama bu noktada sadece yeni bir model oluşturmayı ve sunucuda karışık çalmayı yapmayı düşünüyorum.

Herhangi bir yardım büyük beğeni topluyor!

+0

Görünümü rasgele ayırmak isterseniz, kodu neden görünümde değil, koleksiyona koyun? –

+0

Kod, bir bakışta kapsüllenmiş, sadece ilgili bölümleri yukarıda gösteriyordum. Koleksiyon rastgele hale getirildi, ardından görünüm rastgele toplanmış koleksiyona göre güncellendi ve kaydedildi. – mgee245

cevap

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

Mükemmel! Bu hile yaptı ... Şimdi gidiyorum .reset işlevi şimdi. Çok teşekkürler! – mgee245

+0

Bu harika. Bu, Backbone'un _.shuffle uygulamasının varsayılan davranışı olmasını ister – SimplGy