mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-04-23 11:37:38 +08:00
feat(ngAnimate): cancel previous incomplete animations when new animations take place
This commit is contained in:
committed by
Misko Hevery
parent
c8197b44eb
commit
4acc28a310
@@ -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);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user