mirror of
https://github.com/jashkenas/backbone.git
synced 2026-04-30 03:00:06 -04:00
Merge pull request #2802 from jdkanani/master
allow operation with dense array for Backbone collection
This commit is contained in:
@@ -676,7 +676,7 @@
|
||||
// Turn bare objects into model references, and prevent invalid models
|
||||
// from being added.
|
||||
for (i = 0, l = models.length; i < l; i++) {
|
||||
attrs = models[i];
|
||||
attrs = models[i] || {};
|
||||
if (attrs instanceof Model) {
|
||||
id = model = attrs;
|
||||
} else {
|
||||
@@ -745,7 +745,7 @@
|
||||
}
|
||||
if (sort || (order && order.length)) this.trigger('sort', this, options);
|
||||
}
|
||||
|
||||
|
||||
// Return the added (or merged) model (or models).
|
||||
return singular ? models[0] : models;
|
||||
},
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
equal(col.pluck('label').join(' '), 'a b c d');
|
||||
});
|
||||
|
||||
test("add", 10, function() {
|
||||
test("add", 14, function() {
|
||||
var added, opts, secondAdded;
|
||||
added = opts = secondAdded = null;
|
||||
e = new Backbone.Model({id: 10, label : 'e'});
|
||||
@@ -136,6 +136,18 @@
|
||||
equal(atCol.length, 4);
|
||||
equal(atCol.at(1), e);
|
||||
equal(atCol.last(), h);
|
||||
|
||||
var coll = new Backbone.Collection(new Array(2));
|
||||
var addCount = 0;
|
||||
coll.on('add', function(){
|
||||
addCount += 1;
|
||||
});
|
||||
coll.add([undefined, f, g]);
|
||||
equal(coll.length, 5);
|
||||
equal(addCount, 3);
|
||||
coll.add(new Array(4));
|
||||
equal(coll.length, 9);
|
||||
equal(addCount, 7);
|
||||
});
|
||||
|
||||
test("add multiple models", 6, function() {
|
||||
@@ -556,7 +568,7 @@
|
||||
deepEqual(col.difference([c, d]), [a, b]);
|
||||
});
|
||||
|
||||
test("reset", 12, function() {
|
||||
test("reset", 16, function() {
|
||||
var resetCount = 0;
|
||||
var models = col.models;
|
||||
col.on('reset', function() { resetCount += 1; });
|
||||
@@ -576,6 +588,15 @@
|
||||
col.reset();
|
||||
equal(col.length, 0);
|
||||
equal(resetCount, 4);
|
||||
|
||||
var f = new Backbone.Model({id: 20, label : 'f'});
|
||||
col.reset([undefined, f]);
|
||||
equal(col.length, 2);
|
||||
equal(resetCount, 5);
|
||||
|
||||
col.reset(new Array(4));
|
||||
equal(col.length, 4);
|
||||
equal(resetCount, 6);
|
||||
});
|
||||
|
||||
test ("reset with different values", function(){
|
||||
|
||||
Reference in New Issue
Block a user