diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ng/animator.js | 20 | 
1 files changed, 15 insertions, 5 deletions
| diff --git a/src/ng/animator.js b/src/ng/animator.js index 1f589e91..7fc35f3c 100644 --- a/src/ng/animator.js +++ b/src/ng/animator.js @@ -264,6 +264,7 @@ var $AnimatorProvider = function() {              var animationPolyfill = $animation(className);              var polyfillSetup = animationPolyfill && animationPolyfill.setup;              var polyfillStart = animationPolyfill && animationPolyfill.start; +            var polyfillCancel = animationPolyfill && animationPolyfill.cancel;              if (!className) {                beforeFn(element, parent, after); @@ -281,7 +282,13 @@ var $AnimatorProvider = function() {                  return;                } -              element.data(NG_ANIMATE_CONTROLLER, {running:true}); +              var animationData = element.data(NG_ANIMATE_CONTROLLER) || {}; +              if(animationData.running) { +                (polyfillCancel || noop)(element); +                animationData.done(); +              } + +              element.data(NG_ANIMATE_CONTROLLER, {running:true, done:done});                element.addClass(className);                beforeFn(element, parent, after);                if (element.length == 0) return done(); @@ -354,10 +361,13 @@ var $AnimatorProvider = function() {              }              function done() { -              afterFn(element, parent, after); -              element.removeClass(className); -              element.removeClass(activeClassName); -              element.removeData(NG_ANIMATE_CONTROLLER); +              if(!done.run) { +                done.run = true; +                afterFn(element, parent, after); +                element.removeClass(className); +                element.removeClass(activeClassName); +                element.removeData(NG_ANIMATE_CONTROLLER); +              }              }            };          } | 
