mirror of
https://github.com/jashkenas/backbone.git
synced 2026-04-30 03:00:06 -04:00
Do not alter the "on" events array
This commit is contained in:
@@ -83,8 +83,8 @@
|
||||
on: function(name, callback, context) {
|
||||
if (!eventsApi(this, 'on', name, [callback, context]) || !callback) return this;
|
||||
this._events || (this._events = {});
|
||||
var events = this._events[name] || (this._events[name] = []);
|
||||
events.push({callback: callback, context: context, ctx: context || this});
|
||||
var events = this._events[name] || [];
|
||||
this._events[name] = events.concat({callback: callback, context: context, ctx: context || this});
|
||||
return this;
|
||||
},
|
||||
|
||||
|
||||
@@ -341,14 +341,12 @@
|
||||
test("callback list is not altered during trigger", 2, function () {
|
||||
var counter = 0, obj = _.extend({}, Backbone.Events);
|
||||
var incr = function(){ counter++; };
|
||||
obj.on('event', function(){ obj.on('event', incr).on('all', incr); })
|
||||
.trigger('event');
|
||||
var incrOn = function(){ obj.on('event', incr).on('all', incr); };
|
||||
var incrOff = function(){ obj.off('event', incr).off('all', incr); };
|
||||
obj.on('all', incrOn).on('event', incrOn).trigger('event');
|
||||
equal(counter, 0, 'bind does not alter callback list');
|
||||
obj.off()
|
||||
.on('event', function(){ obj.off('event', incr).off('all', incr); })
|
||||
.on('event', incr)
|
||||
.on('all', incr)
|
||||
.trigger('event');
|
||||
obj.off().on('all', incrOff).on('event', incrOff)
|
||||
.on('event', incr).on('all', incr).trigger('event');
|
||||
equal(counter, 2, 'unbind does not alter callback list');
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user