2013-05-25 16 views
6

我在嘗試隨機化集合中對象的順序時遇到問題。Backbone.js如何洗牌集合中的項目

下面是我試過的代碼:

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

而這裏的控制檯輸出(使用測試集有3項):

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] 

正如你所看到的,收藏是沒有適當的洗牌,而是創造了一個充滿討厭的孩子的新的不可用的對象。

我想要做的就是隨機化模型在集合中出現的順序,然後將其傳遞給視圖進行顯示(我創建了一個名爲「randomize」的按鈕,它需要隨機顯示集合中的項目)。我認爲這將是一件容易的事,但此時我正在考慮創建一個全新的模型並在服務器上進行洗牌。

任何幫助,非常感謝!

+0

如果你想隨機化視圖,爲什麼把代碼放在集合而不是視圖? –

+0

代碼封裝在視圖中,我只是在上面顯示相關部分。該集合是隨機的,然後基於隨機收集更新視圖,並保存。 – mgee245

回答

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

完美!這個訣竅...我現在去看看.reset函數。非常感謝! – mgee245

+0

這太好了。希望這是Backbone的_.shuffle實現的默認行爲 – SimplGy