2012-02-16 54 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