Angularjs - 在$ routeChangeError之后删除最后一个历史记录条目

时间:2014-01-28 16:12:24

标签: javascript angularjs angular-http-auth

我有route,必须resolve服务器端资源。该资源要求进行身份验证。所以我显示了一个可取消的登录表单弹出窗口。取消后,路线/解决方案会rejected$routeChangeError正确触发。

问题是,我现在在地址栏中有一个失败的位置/网址和一个不必要的历史记录条目。

如何在不重新加载的情况下将当前位置网址替换为最后一位?如何在路由更改失败后删除当前的历史记录条目?

编辑: 我使用angular-http-auth。 这是我的路线:

/home> /item(必须解析需要身份验证的资源,如果没有登录登录窗体,弹出窗口会被取消)

当我取消身份验证时,$ routeChangeError被触发,我仍然在/home 由于/item从未呈现的页面。现在地址栏显示错误的网址:/item

1 个答案:

答案 0 :(得分:2)

您只需将历史记录中的一步发送回去即可。不要担心历史记录在那里,当它们导航到下一件事时它将被覆盖:

app.run(function($rootScope, $window) {
   $rootScope.$on('$routeChangeError', function () {
      $window.history.back();
   });
});

And here's a demo Plunk