所以。我有一个非常简单的问题,应该有一个简单的解决方案。我只是没看到。
在我的 ember 应用程序中,我有一个登录路由,并且在标题中有一个指向它的链接。您单击此按钮,然后进入登录表单。成功登录后,我想回到登录表单之前显示的路线。
类似于以下 url 序列
/post/209 - 用户单击登录
/login - 用户提供凭据、提交和
/post/209 - 显示
所以。我有一个非常简单的问题,应该有一个简单的解决方案。我只是没看到。
在我的 ember 应用程序中,我有一个登录路由,并且在标题中有一个指向它的链接。您单击此按钮,然后进入登录表单。成功登录后,我想回到登录表单之前显示的路线。
类似于以下 url 序列
/post/209 - 用户单击登录
/login - 用户提供凭据、提交和
/post/209 - 显示
要回答我自己的问题,您可以使用路由器上的 didTransition 钩子,就像这样
App.Router.reopen({
didTransition: function(infos) {
this._super(infos);
var currentRoute = infos[infos.length - 1];
this.send('routeChanged', {
route: currentRoute.name,
context: currentRoute.context
});
}
});
infos 包含转换后的活动路由数组。例如过渡到 PostEdit,活动路线将是
在我的应用程序中,我在 ApplicationRoute 中捕获了 routeChanged 事件,并在 ApplicationController 中保留了最后一个事件的堆栈。此堆栈中的第二个条目用于转换到前一个路由。
我还没有尝试过,这可能不是最优雅的解决方案,但你能不能简单地做window.history.back()
,让路由器来处理剩下的事情?
登录页面链接应该是一个带有上一页链接的 GET 请求。
像下面的前任,推特
https://twitter.com/login?redirect_after_login=%2FitsWillyFerrell%2Ffollowers
观察该redirect_after_login
字段指向我来自的人员页面的用户名,因此您在登录后可以访问一次。