Фильтр коллекции Backbone.js топ 10 моделей
Моя коллекция извлекает несколько записей, и я должен показать только 10 лучших записей из нее. Я пытался
this.collection.each(function(){
if (count == 10) break;
//pass model to view
});
к сожалению, break не работает с API каждого () underscore.js. См. здесь: как сломать функцию _.each в underscore.js
Как мне написать фильтр, чтобы выщипывать только топ 10 из коллекции
this.collection.filter();
ОБНОВЛЕНИЕ: collection.first(10) получил отфильтрованный список. Однако мне все еще нужно было связать.each() с этой коллекцией для обработки элементов коллекции. collection.first() не разрешает цепочку. Пожалуйста, обратитесь к моему выбранному ответу для решения этой проблемы.
1 ответ
Например
this.collection.first(10)
Затем, если вам нужно работать с каждой моделью, например:
var collection = new Backbone.Collection([{id:1}, {id:2}, {id:3}, {id:4}, {id:5}],{model: Backbone.Model});
var newCollection = new Backbone.Collection(collection.first(2));
newCollection.each(function(model){
alert(JSON.stringify(model.toJSON()));
});
Смотрите JSFIDDLE. Обратите внимание, что есть другой способ сделать это с помощью метода цепочки Underscore, как сказано в этом разделе.
Взгляните на документ Backbone и документ Underscore.