SparseCollection Extension or Mixin

The SparseCollection can be used directly, extended, or mixed into another Collection constructor.

Extending

The SparseCollection Backbone class includes all functionality described below. Use it or extend it like you would any other Backbone class:

Backbone.Conduit.SparseCollection.extend({
    initialize: function(models, options) {
        // ...
    }, 

    // ... and so on
});

var collection = new MyCollection();

// If you have a large amount of data injected onto the page, instead of 'reset(...)' do ...
var aBigArray = [ ... ];
collection.refill(aBigArray);

// Or, if you need to get it asynchronously, instead of 'fetch()' do ...
collection.haul();

Mixin

If you are already extending from a Backbone.Collection class, you may mix in the sparseData module's behavior to act like a SparseCollection:

var MyCollection = Backbone.Collection.extend({ ... });
Conduit.sparseData.mixin(MyCollection);

// Let's get some data
var collection = new MyCollection();
collection.haul().then(function() {
    console.log('We now have ' + collection.length + ' items!');
});

The sparseData module will also include the haul, fill and refill modules from the Conduit.QuickCollection; those methods act as replacements for the corresponding fetch, set, and reset methods of a Backbone.Collection.

Note that mixing in functionality to an existing Collection class may be problematic. The internal behavior of a SparseCollection is dramatically different than other collections. See the Usage section for more details.