From 99720fb5ab7259af37f708bc4eeda7cbbe790a69 Mon Sep 17 00:00:00 2001 From: Matias Niemelä Date: Mon, 24 Feb 2014 14:47:12 -0500 Subject: fix($animate): ensure all animated elements are taken care of during the closing timeout Closes #6395 --- src/ngAnimate/animate.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/ngAnimate/animate.js b/src/ngAnimate/animate.js index 6b7fbcce..c09e714e 100644 --- a/src/ngAnimate/animate.js +++ b/src/ngAnimate/animate.js @@ -1063,6 +1063,15 @@ angular.module('ngAnimate', ['ng']) var closingTimestamp = 0; var animationElementQueue = []; function animationCloseHandler(element, totalTime) { + var node = extractElementNode(element); + element = angular.element(node); + + //this item will be garbage collected by the closing + //animation timeout + animationElementQueue.push(element); + + //but it may not need to cancel out the existing timeout + //if the timestamp is less than the previous one var futureTimestamp = Date.now() + (totalTime * 1000); if(futureTimestamp <= closingTimestamp) { return; @@ -1070,10 +1079,6 @@ angular.module('ngAnimate', ['ng']) $timeout.cancel(closingTimer); - var node = extractElementNode(element); - element = angular.element(node); - animationElementQueue.push(element); - closingTimestamp = futureTimestamp; closingTimer = $timeout(function() { closeAllAnimations(animationElementQueue); -- cgit v1.2.3