I have a list of users (six to be exact) in a collection with \'firstname\', \'lastname\' properties. Doing a fetch, the comparator below sorts them by \'firstname\', and it wor
To respond to your update:
If you're wanting to change the order that the collection is sorted in for use by it's corresponding view then you could just update the comparator
and then call sort
to get the model re-sorted. This will then fire a sort
event which your view can listen for and update itself accordingly.
this.collection.comparator = function (user) {
return user.get("firstname").toLowerCase();
};
this.collection.sort();
The sortBy
function does not sort the objects in the current collection. It returns a sorted collection:
var sortedCollection = this.collection.sortBy(function(user){
return user.get("lastname").toLowerCase();
});
Now you can use sortedCollection
and it will be sorted correctly.
Underscore's sortBy
which Backbone uses, returns the sorted collection not sort it in place...
To illustrate:
var flinstones = [{first: 'Baby', last: 'Puss'}, {first: 'Fred', last: 'Flinstone'}];
var sorted = _.sortBy(flinstones, function (character) { return character.last ; });
console.log(sorted);
console.log(flinstones);