Фильтр коллекции 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.

Другие вопросы по тегам