diff --git a/backbone.js b/backbone.js index 75d3f048..f1728acc 100644 --- a/backbone.js +++ b/backbone.js @@ -548,7 +548,7 @@ var Collection = Backbone.Collection = function(models, options) { options || (options = {}); if (options.model) this.model = options.model; - if (options.comparator) this.comparator = options.comparator; + if (options.comparator !== undefined) this.comparator = options.comparator; this._reset(); this.initialize.apply(this, arguments); if (models) this.reset(models, {silent: true, parse: options.parse}); diff --git a/test/collection.js b/test/collection.js index 5befc9c3..4b764bc1 100644 --- a/test/collection.js +++ b/test/collection.js @@ -606,4 +606,18 @@ $(document).ready(function() { ok(!collection.get('undefined')); }); + test("Collection: falsy comparator", function(){ + var Col = Backbone.Collection.extend({ + comparator: function(model){ return model.id; } + }); + var col = new Col + var colFalse = new Col(null, {comparator: false}); + var colNull = new Col(null, {comparator: null}); + var colUndefined = new Col(null, {comparator: undefined}); + ok(col.comparator); + ok(!colFalse.comparator); + ok(!colNull.comparator); + ok(colUndefined.comparator); + }); + });