2016-03-31 4 views
0

У меня есть Backbone.Collection, который был создан следующим образом:Backbone.Collection получить первые п как новая коллекция

let col = new Backbone.Collection(); 

let model1 = new Backbone.Model(); 
model1.set('name', 'first'); 
col.add(model1); 

let model2 = new Backbone.Model(); 
model2.set('name', 'second'); 
col.add(model2); 

let model3 = new Backbone.Model(); 
model3.set('name', 'third'); 
col.add(model3); 

При попытке выбрать 2 первые модели из коллекции в этом:

let firstTwo = col.first(2); 

firstTwo содержит model1 и model2 в виде массива.

Как я могу получить первые два как Backbone.Collection без добавления их вручную в новую коллекцию?

ответ

2

Вы должны создать новую коллекцию & добавить их. Хорошей новостью является создание новой коллекции, очень недорогой, и экземпляры модели будут такими же, как в полной, так и в частичной коллекции.

Коллекции автоматически включают в себя некоторые встроенные методы. Но этот метод возвращает все массивы объектов Model. Если вы хотите вместо этого получить экземпляр Collection, лучше всего создать другой метод в вашем классе Collection. Однако вы все равно можете использовать методы Underscore для фильтрации.

var MyCollection = Backbone.Collection.extend({ 
    // ... 
    firstAsCollection: function(numItems) { 
     var models = this.first(numItems); 
     return new MyCollection(models); 
    } 
}); 
0

Вы можете создать функцию внутри вашей модели Col, которая должна вести себя что-то вроде следующий:

sublist: function (numberOfElements) { 
    var i = 0; 
    return this.filter(function (model) { 
       if (i <= numberOfElements){ 
        return true; 
       } 
       return false; 
    }); 
}  
Смежные вопросы