diff --git a/src/Angular.js b/src/Angular.js index fef4278ff2b2..da2fb94aed94 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -1909,7 +1909,7 @@ function bindJQuery() { jqLite.cleanData = function(elems) { var events; for (var i = 0, elem; (elem = elems[i]) != null; i++) { - events = jqLite._data(elem).events; + events = (jqLite._data(elem) || {}).events; if (events && events.$destroy) { jqLite(elem).triggerHandler('$destroy'); } diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js index 5e8bbbfcdc46..14d60900611a 100644 --- a/test/jqLiteSpec.js +++ b/test/jqLiteSpec.js @@ -501,6 +501,12 @@ describe('jqLite', function() { expect(jqLite(c).data('prop')).toBeUndefined(); }); + it('should not break on cleanData(), if element has no data', function() { + var selected = jqLite([a, b, c]); + spyOn(jqLite, '_data').and.returnValue(undefined); + expect(function() { jqLite.cleanData(selected); }).not.toThrow(); + }); + it('should add and remove data on SVGs', function() { var svg = jqLite('');