From b9a9f91fbf99b71cfde434b6277f4c7d2533556f Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Sat, 24 Nov 2012 01:51:19 +0100 Subject: [PATCH] fix(jqLite): fire $destroy event via triggerHandler in jQuery 1.8.x the data() data structure is changed and events are not accessible via data().events. Since all we need is to trigger all event handlers, we can do so via triggerHandler() api instead of mocking with the internal jQuery data structures. This fix was originally proposed by PeteAppleton via PR #1512. Closes #1512 --- src/jqLite.js | 7 +------ test/ngScenario/ApplicationSpec.js | 5 +---- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/jqLite.js b/src/jqLite.js index 90a363f39987..26be5977dc03 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -130,12 +130,7 @@ function JQLitePatchJQueryRemove(name, dispatchThis) { for(setIndex = 0, setLength = set.length; setIndex < setLength; setIndex++) { element = jqLite(set[setIndex]); if (fireEvent) { - events = element.data('events'); - if ( (fns = events && events.$destroy) ) { - forEach(fns, function(fn){ - fn.handler(); - }); - } + element.triggerHandler('$destroy'); } else { fireEvent = !fireEvent; } diff --git a/test/ngScenario/ApplicationSpec.js b/test/ngScenario/ApplicationSpec.js index 7384ecaa7a3c..0236b8d796fd 100644 --- a/test/ngScenario/ApplicationSpec.js +++ b/test/ngScenario/ApplicationSpec.js @@ -5,10 +5,7 @@ describe('angular.scenario.Application', function() { var app, frames; function callLoadHandlers(app) { - var handlers = app.getFrame_().data('events').load; - expect(handlers).toBeDefined(); - expect(handlers.length).toEqual(1); - handlers[0].handler(); + var handler = app.getFrame_().triggerHandler('load') } beforeEach(function() {