JSFiddle - React, Tailwind, and code Playground

by Eric Howe

HTML

<script src="http://documentcloud.github.com/underscore/underscore-min.js"></script>
<script src="http://documentcloud.github.com/backbone/backbone-min.js"></script>

JavaScript

function dump(rs) {
    console.log('-----');
    rs.each(function(m) {
        console.log(m.id + ' ' + m.get('offers'));
    });
}

var Request = Backbone.Model.extend({});

var Requests = Backbone.Collection.extend({
    model: Request,
    comparator: function(ab) {
        if(this._order_by == 'offers')
            return ab.get('offers');
        else if(this._order_by == 'id')
            return -ab.id;
        else
        return this._order_by == 'offers'
             ? ab.get('offers')
             : -ab.id;
    },
    order_by_offers: function() {
        this._order_by = 'offers';
        this.sort();
    },
    order_by_default: function() {
        this._order_by = 'id';
        this.sort();
    },
    _order_by: 'id'
});

var rs = new Requests();
rs.add({ id: 1, offers:  6 });
rs.add({ id: 2, offers: 11 });
rs.add({ id: 3, offers:  1 });
dump(rs);
rs.order_by_offers();
dump(rs);
rs.order_by_default();
dump(rs);