2016-03-31 13 views
0

ben şöyle kurulmuştur bir Backbone.Collection sahip yeni koleksiyon olarak ilk n olsun: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); 

Bununla koleksiyonundan ilk 2 modelini seçmek girişiminde:

let firstTwo = col.first(2); 

firstTwo, bir dizi olarak model1 ve model2 içerir.

İlk ikisi, hepsini yeni bir koleksiyona eklemeden Backbone.Collection olarak nasıl alabilirim?

cevap

2

Onları eklemek yeni Collection & oluşturmak zorunda. İyi bir haber, yeni bir koleksiyon oluşturmak çok ucuz ve model örnekleri tam ve kısmi koleksiyonda aynı olanları olacaktır.

Koleksiyonlar otomatik olarak bunlara yerleşik bazı Underscore yöntemlerine sahiptir. Ancak bu yöntem, tüm model nesnelerinin dizilerini döndürür. Bunun yerine bir Koleksiyon örneği almak istiyorsanız, en iyi seçiminiz Koleksiyon sınıfınızda başka bir yöntem oluşturmaktır. Bununla birlikte, filtrelemeyi yapmak için yine de Underscore yöntemlerini kullanabilirsiniz.

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

Aşağıdaki gibi bir şey davranması gerektiğini sizin col modeli içinde bir işlev oluşturabilirsiniz:

sublist: function (numberOfElements) { 
    var i = 0; 
    return this.filter(function (model) { 
       if (i <= numberOfElements){ 
        return true; 
       } 
       return false; 
    }); 
}