From 7e5dcedb3007848c70948bf4d63c1efadf05442b Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Thu, 3 Oct 2013 16:20:14 -0700 Subject: [PATCH] try to fix "template" argument in event handlers --- packages/ui/base.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/ui/base.js b/packages/ui/base.js index 0fda88a403..6c14d74adb 100644 --- a/packages/ui/base.js +++ b/packages/ui/base.js @@ -1186,16 +1186,9 @@ _extend(UI.Component, { var newEvents = parts.shift(); var selector = parts.join(' '); - var wrappedHandler = function (event) { - var comp = UI.DomRange.getContainingComponent(event.currentTarget); - var data = comp && getComponentData(comp); - if (comp) - updateTemplateInstance(comp); - handler.call(data, event, comp && comp.templateInstance); - }; events.push({events: newEvents, selector: selector, - handler: wrappedHandler}); + handler: handler}); }); }); } @@ -1207,7 +1200,17 @@ UI.Component.parented = function () { for (var comp = self; comp; comp = comp._super) { var events = comp.hasOwnProperty('_events') && comp._events; _.each(events, function (esh) { // {events, selector, handler} - self.dom.on(esh.events, esh.selector, esh.handler); + // wrap the handler here, per instance of the template that + // declares the event map, so we can pass the instance to + // the event handler. + var wrappedHandler = function (event) { + var comp = UI.DomRange.getContainingComponent(event.currentTarget); + var data = comp && getComponentData(comp); + updateTemplateInstance(self); + esh.handler.call(data, event, self.templateInstance); + }; + + self.dom.on(esh.events, esh.selector, wrappedHandler); }); }