From 697e848fbe0a2cab8a56ea8641f82f17d9b86c99 Mon Sep 17 00:00:00 2001 From: Jonny Gerig Meyer Date: Mon, 5 Jan 2015 11:45:30 -0500 Subject: [PATCH] Update Backbone.js plugin to handle event map syntax. --- plugins/backbone.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/plugins/backbone.js b/plugins/backbone.js index 1d0211a025df..09e0f6b8c1c9 100644 --- a/plugins/backbone.js +++ b/plugins/backbone.js @@ -13,9 +13,24 @@ if (!Backbone) { function makeBackboneEventsOn(oldOn) { return function BackboneEventsOn(name, callback, context) { - var _callback = callback._callback || callback; - callback = Raven.wrap(callback); - callback._callback = _callback; + var wrapCallback = function (cb) { + if (Object.prototype.toString.call(cb) === '[object Function]') { + var _callback = cb._callback || cb; + cb = Raven.wrap(cb); + cb._callback = _callback; + } + return cb; + }; + if (Object.prototype.toString.call(name) === '[object Object]') { + // Handle event maps. + for (var key in name) { + if (name.hasOwnProperty(key)) { + name[key] = wrapCallback(name[key]); + } + } + } else { + callback = wrapCallback(callback); + } return oldOn.call(this, name, callback, context); }; }