diff --git a/backbone.js b/backbone.js index 5379612bb..3c4b3e76e 100644 --- a/backbone.js +++ b/backbone.js @@ -190,27 +190,25 @@ // An inversion-of-control version of `on`. Tell *this* object to listen to // an event in another object ... keeping track of what it's listening to. - listenTo: function(object, events, callback, context) { - context = context || this; + listenTo: function(object, events, callback) { var listeners = this._listeners || (this._listeners = {}); var id = object._listenerId || (object._listenerId = _.uniqueId('l')); listeners[id] = object; - object.on(events, callback || context, context); + object.on(events, callback || this, this); return this; }, // Tell this object to stop listening to either specific events ... or // to every object it's currently listening to. - stopListening: function(object, events, callback, context) { - context = context || this; + stopListening: function(object, events, callback) { var listeners = this._listeners; if (!listeners) return; if (object) { - object.off(events, callback, context); + object.off(events, callback, this); if (!events && !callback) delete listeners[object._listenerId]; } else { for (var id in listeners) { - listeners[id].off(null, null, context); + listeners[id].off(null, null, this); } this._listeners = {}; } diff --git a/index.html b/index.html index 8e4c112dc..cc2e6214c 100644 --- a/index.html +++ b/index.html @@ -772,10 +772,10 @@

Backbone.Events

- listenToobject.listenTo(other, event, callback, [context]) + listenToobject.listenTo(other, event, callback)
Tell an object to listen to a particular event on an other object. - The advantage of using this form, instead of other.on(event, callback, [context]), + The advantage of using this form, instead of other.on(event, callback), is that listenTo allows the object to keep track of the events, and they can be removed all at once later on.

@@ -785,7 +785,7 @@

Backbone.Events

- stopListeningobject.stopListening([other], [event], [callback], [context]) + stopListeningobject.stopListening([other], [event], [callback])
Tell an object to stop listening to events. Either call stopListening with no arguments to have the object remove diff --git a/test/events.js b/test/events.js index 93af6acd1..cf6c8f53a 100644 --- a/test/events.js +++ b/test/events.js @@ -86,30 +86,6 @@ $(document).ready(function() { b.trigger('change'); }); - test("listenTo with context", 1, function() { - var a = _.extend({}, Backbone.Events); - var ctx = {}; - a.listenTo(a, 'foo', function(){ equal(this, ctx); }, ctx); - a.trigger('foo'); - }); - - test("stopListening with context", 2, function() { - var a = _.extend({}, Backbone.Events); - var ctx = {}; - var calledWithContext = false; - var calledWithoutContext = false; - - a.listenTo(a, 'foo', function(){ calledWithContext = true; }, ctx); - a.listenTo(a, 'foo', function(){ calledWithoutContext = true; }); - - a.stopListening(a, 'foo', null, ctx); - - a.trigger('foo'); - - equal(false, calledWithContext); - equal(true, calledWithoutContext); - }); - test("trigger all for each event", 3, function() { var a, b, obj = { counter: 0 }; _.extend(obj, Backbone.Events);