mirror of
https://github.com/jashkenas/backbone.git
synced 2026-04-30 03:00:06 -04:00
Ensure #on and #off **never** alter callback list
This commit is contained in:
@@ -292,6 +292,7 @@
|
||||
if (objEvents) {
|
||||
var events = objEvents[name];
|
||||
var allEvents = objEvents.all;
|
||||
if (events && allEvents) allEvents = allEvents.slice();
|
||||
if (events) triggerEvents(events, args);
|
||||
if (allEvents) triggerEvents(allEvents, [name].concat(args));
|
||||
}
|
||||
|
||||
@@ -372,16 +372,15 @@
|
||||
|
||||
test("callback list is not altered during trigger", 2, function () {
|
||||
var counter = 0, obj = _.extend({}, Backbone.Events);
|
||||
var fn = function(){};
|
||||
var fnOff = function(){ obj.off('event', fn); };
|
||||
var incr = function(){ counter++; };
|
||||
var incrOn = function(){ obj.on('event all', incr); };
|
||||
var incrOff = function(){ obj.off('event all', incr); };
|
||||
|
||||
obj.on('event', incrOn).trigger('event');
|
||||
obj.on('event all', incrOn).trigger('event');
|
||||
equal(counter, 0, 'on does not alter callback list');
|
||||
|
||||
obj.off().on('event', fn).on('event', fnOff).on('event', incr).trigger('event');
|
||||
equal(counter, 1, 'off does not alter callback list');
|
||||
obj.off().on('event', incrOff).on('event all', incr).trigger('event');
|
||||
equal(counter, 2, 'off does not alter callback list');
|
||||
});
|
||||
|
||||
test("#1282 - 'all' callback list is retrieved after each event.", 1, function() {
|
||||
|
||||
Reference in New Issue
Block a user