我认为考虑延迟更改路线并不是一个好主意,因为如果路线快速连续更改,您可能会遇到问题。
但是,Angular 已经内置了对动画的支持,包括 javascript 驱动的转换,比如(可能)来自语义 UI 的转换。有相当多的信息在
http://www.yearofmoo.com/2013/08/remastered-animation-in-angularjs-1-2.html#how-to-make-animations-in-angularjs
但我认为你需要的是
- 向 ng-view (/ui-view?) 元素添加一个类,例如“my-animated-view”
- 编写类似于下面的代码(从上面的页面复制+修改),自定义“进入”转换到进入的转换视图。如果你想在离开的视图上进行转换,请在“离开”时进行。其他的可以保留为默认值(它只是调用 done() 函数来告诉 Angular 动画完成了),因为我认为你不需要它们
Angular 所做的是在进入视图时,它会调用“进入”转换,并在调用传递的“完成”函数后进行清理。
myApp.animation('.my-animated-view', function() {
return {
enter : function(element, done) {
//node the done method here as the 3rd param
$(element).transition('fade up', '300ms', done);
return function(cancelled) {
/* this (optional) function is called when the animation is complete
or when the animation has been cancelled (which is when
another animation is started on the same element while the
current animation is still in progress). */
if(cancelled) {
// Something here to stop?
}
}
},
leave : function(element, done) { done(); },
move : function(element, done) { done(); },
beforeAddClass : function(element, className, done) { done(); },
addClass : function(element, className, done) { done(); },
beforeRemoveClass : function(element, className, done) { done(); },
removeClass : function(element, className, done) { done(); },
allowCancel : function(element, event, className) {}
};
});