1

所以。我有一个非常简单的问题,应该有一个简单的解决方案。我只是没看到。

在我的 ember 应用程序中,我有一个登录路由,并且在标题中有一个指向它的链接。您单击此按钮,然后进入登录表单。成功登录后,我想回到登录表单之前显示的路线。

类似于以下 url 序列

/post/209 - 用户单击登录
/login - 用户提供凭据、提交和
/post/209 - 显示

4

3 回答 3

0

要回答我自己的问题,您可以使用路由器上的 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,活动路线将是

  • infos[0].name = '应用程序'
  • infos[1].name = '发布'
  • infos[2].name = 'post.edit'

在我的应用程序中,我在 ApplicationRoute 中捕获了 routeChanged 事件,并在 ApplicationController 中保留了最后一个事件的堆栈。此堆栈中的第二个条目用于转换到前一个路由。

于 2013-10-28T12:37:05.723 回答
0

我还没有尝试过,这可能不是最优雅的解决方案,但你能不能简单地做window.history.back(),让路由器来处理剩下的事情?

于 2013-09-22T19:51:56.823 回答
-1

登录页面链接应该是一个带有上一页链接的 GET 请求。

像下面的前任,推特

https://twitter.com/login?redirect_after_login=%2FitsWillyFerrell%2Ffollowers

观察该redirect_after_login字段指向我来自的人员页面的用户名,因此您在登录后可以访问一次。

于 2013-09-22T19:58:23.430 回答