From f4f1f43d5140385bbf070510975f72b65196e08a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matias=20Niemel=C3=A4?= Date: Wed, 26 Feb 2014 16:07:36 -0500 Subject: [PATCH] fix($animate): ensure all comment nodes are removed during a leave animation Closes #6403 --- src/ngAnimate/animate.js | 3 +-- test/ngAnimate/animateSpec.js | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/ngAnimate/animate.js b/src/ngAnimate/animate.js index 4b35d5fdcf60..959dd55bc50b 100644 --- a/src/ngAnimate/animate.js +++ b/src/ngAnimate/animate.js @@ -436,8 +436,7 @@ angular.module('ngAnimate', ['ng']) cancelChildAnimations(element); this.enabled(false, element); $rootScope.$$postDigest(function() { - element = stripCommentsFromElement(element); - performAnimation('leave', 'ng-leave', element, null, null, function() { + performAnimation('leave', 'ng-leave', stripCommentsFromElement(element), null, null, function() { $delegate.leave(element); }, doneCallback); }); diff --git a/test/ngAnimate/animateSpec.js b/test/ngAnimate/animateSpec.js index eaed757e741b..6dd3b1175de4 100644 --- a/test/ngAnimate/animateSpec.js +++ b/test/ngAnimate/animateSpec.js @@ -3418,6 +3418,27 @@ describe("ngAnimate", function() { }); }); + it('should remove all element and comment nodes during leave animation', + inject(function($compile, $rootScope) { + + $rootScope.items = [1,2,3,4,5]; + + var element = html($compile( + '
' + + '
start
' + + '
end
' + + '
' + )($rootScope)); + + $rootScope.$digest(); + + $rootScope.items = []; + + $rootScope.$digest(); + + expect(element.children().length).toBe(0); + })); + it('should not throw an error when only comment nodes are rendered in the animation', inject(function($rootScope, $compile) {