大家好,
阅读this google group以及从那里链接的小提琴和博客帖子,我设法让页面过渡与ng-animate一起使用。
这里的 my Fiddle
the fiddle is nicely commented, please let me know if anything's unclear
通过在ng-view上设置'transitionClass'(.LR或.RL),我能够为每次视图更改触发不同的css-transitions。
现在,我想要做的是,在将视图向后退一步的情况下,手动应用“后退”转换,无论退回是由应用程序中的链接还是浏览器的后退按钮引起的。 / p>
为此,在app.run()中,我正在监听$ locationChangeStart,保存当前的url slug,然后在下一个$ locationChangeStart上检查它,以确定我们是否要返回一页。如果是这种情况,则应用“后退”转换。
除了...
之外,效果非常好输入页面(.page-enter,.page-enter-active)正在按预期转换,而离开页面(.page-leave,.page-leave-active)似乎停留在之前使用的转换上
我希望,在ng-view上设置transitionClass'LR',进入和离开的两个页面都使用css转换为'.LR page-enter'和'LR page-leave'。
似乎发生了什么:如果之前的transitionClass为'ANY',则ng-animate将使用'.LR page-enter'作为输入页面,'.ANY page-leave'作为离开页面。
重现'bug':
应用程序从第1页开始。从1到2.现在从2到3,此转换已中断。从3到1,这个过渡按预期工作。 两个转换都是'RL'(从右到左),所以它们应该看起来一样。唯一的区别是第2页进入'LR'而第3页进入'RL'。因此,实际上,第1页将使用最初为第3页设置的“.enter-active”转换,从2更改为3。
这是预期的行为吗?
我现在主要被困扰,但是在过去一周左右只使用角度和ng-animate是一个相对较新的功能我可能很遗憾。因此,在报告错误或任何内容之前,我欢迎您提出任何意见。
谢谢!
答案 0 :(得分:2)
好的,基于这些评论,我非常确定您希望传入页面还确定要应用于传出页面的退出动画。所以你真的需要你的$ locationChange代码。
您看到的问题似乎是您在传入页面上独立地在父级上设置了一个类,但没有任何东西可以让动画等待此类更改发生。
最简单的修复似乎是让ng-animate依赖于你的变化变量来确定动画类名:
<ng-view ng-animate="transitionClass"></ng-view>
然后CSS选择器就会崩溃成单个类:
.LR-enter-active {
...
}
(其中transitionClass仍在locationChangeStart的$ rootScope上设置:)
$rootScope.$on("$locationChangeStart", function (event, next, current) {
...