我正在尝试为路线之间的过渡设置动画,并且我想使用 jQuery,而不是ember-animated-outlet中的 CSS3 动画。
到目前为止,我已经用将{{link-to}}
路由作为参数的操作替换了助手。我在相关控制器中定义了这个动作(淡出 main 中的所有内容{{outlet}}
,然后调用)。transitionToRoute()
然后我afterModel
在新路线上使用钩子将主线淡入{{outlet}}
。
模板:
<li><a href="#/posts" {{action goToRoute 'posts'}}>Posts</a></li>
控制器:
App.ApplicationController = Ember.Controller.extend({
actions: {
goToRoute: function(route) {
var that = this;
$('.mainoutlet').fadeTo(200, 0, function() {
that.transitionToRoute(route);
});
}
}
});
路线:
App.PostsRoute = Ember.Route.extend({
afterModel: function() {
$('.mainoutlet').fadeTo(200, 1);
}
});
这一切都很好,直到我已经在帖子路线上单击“帖子”链接。我不确定这是否是因为transitionToRoute()
如果您已经在您尝试转换到的路线上(即使它似乎已记录),或者如果afterModel
没有第二次调用钩子(也许两者兼而有之)。
我已经尝试(有点不成功)针对 测试路由参数,currentPath
并且仅在它们不同时淡出主参数{{outlet}}
,以确保实际发生转换。是否有另一种方法可以确保在 处调用方法PostsRoute
,无论我是否已经在该路线上?或者确实有更好的方法来做到这一点?