2012-02-16 3 views
2

Скажем у меня простой Backbone.Collection с некоторыми моделями в нем:Как перемещать модель внутри коллекции?

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

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

Как я могу переместить модель в коллекции - например, 5-й - на 2-ю позицию? Таким образом, сортировка не по полю модели, а просто по изменению порядка сортировки вручную.

Примечание: Я упростил модели 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

Смежные вопросы