2012-02-16 47 views
2

說我有一個簡單的Backbone.Collection一些車型那樣:如何在集合中移動模型?

var Library = Backbone.Collection.extend({ 
    model: Book 
}); 

lib = new Library(
    [Book1, Book2, Book3, Book4, Book5, Book6] 
]); 

我如何才能將集合中的模型 - 例如第五名到第二名?因此,不需要按模型字段進行排序,而只需手動更改排序順序。

注:我簡化了型號Book1, ...。他們當然是Backbone.Model s。

回答

5

您可以直接訪問模型陣列來修改順序。鬆散的基礎上這個問題Move an array element from one array position to another,這樣的事情應該工作:

var c = new Backbone.Collection([{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}]); 
console.log(c.pluck("id")); 

var from_ix = 4, 
    to_ix = 1; 
c.models.splice(to_ix, 0, c.models.splice(from_ix, 1)[0]); 
console.log(c.pluck("id")); 

並演示http://jsfiddle.net/nikoshr/5DGJs/

+0

非常感謝!我完全忘了'collection.models'數組,並認爲'Collection'中必須有一些功能。我錯過了樹林;-) – acme 2012-02-17 11:57:26