mirror of
https://github.com/jashkenas/backbone.git
synced 2026-04-30 03:00:06 -04:00
Fix #2846 nested "change" events trigger with correct options
This commit is contained in:
@@ -350,7 +350,7 @@
|
||||
|
||||
// Trigger all relevant attribute changes.
|
||||
if (!silent) {
|
||||
if (changes.length) this._pending = true;
|
||||
if (changes.length) this._pending = options;
|
||||
for (var i = 0, l = changes.length; i < l; i++) {
|
||||
this.trigger('change:' + changes[i], this, current[changes[i]], options);
|
||||
}
|
||||
@@ -361,6 +361,7 @@
|
||||
if (changing) return this;
|
||||
if (!silent) {
|
||||
while (this._pending) {
|
||||
options = this._pending;
|
||||
this._pending = false;
|
||||
this.trigger('change', this, options);
|
||||
}
|
||||
|
||||
@@ -262,6 +262,26 @@
|
||||
model.set({result: void 0});
|
||||
});
|
||||
|
||||
test("nested set triggers with the correct options", function() {
|
||||
var model = new Backbone.Model();
|
||||
var o1 = {};
|
||||
var o2 = {};
|
||||
var o3 = {};
|
||||
model.on('change', function(__, options) {
|
||||
switch (model.get('a')) {
|
||||
case 1:
|
||||
equal(options, o1);
|
||||
return model.set('a', 2, o2);
|
||||
case 2:
|
||||
equal(options, o2);
|
||||
return model.set('a', 3, o3);
|
||||
case 3:
|
||||
equal(options, o3);
|
||||
}
|
||||
});
|
||||
model.set('a', 1, o1);
|
||||
});
|
||||
|
||||
test("multiple unsets", 1, function() {
|
||||
var i = 0;
|
||||
var counter = function(){ i++; };
|
||||
|
||||
Reference in New Issue
Block a user