我有一个route,它必须resolve服务器端的资源。该资源要求进行身份验证。所以我显示了一个可以取消的登录表单弹出窗口。在取消路由/解析时,会正确触发rejected和$routeChangeError。
问题是,我现在在地址栏中有一个失败的位置/url和一个不必要的历史记录条目。
如何在不重新加载的情况下将当前位置url替换为最后一个?路由变更失败后,如何删除当前历史记录?
编辑:我使用angular-http-auth。下面是我的路由:
/home > /item (必须解析需要身份验证的资源,如果未登录登录表单,则会打开可取消的弹出窗口)
当我取消身份验证时,一个$routeChangeError被触发,而我仍然在/home页面上,因为/item从未呈现过。现在地址栏显示了一个错误的url:/item
发布于 2014-01-29 04:59:16
你只需要让他们回到你的历史中的一步。不要担心历史记录在那里,当他们导航到下一件事时,它会被覆盖:
app.run(function($rootScope, $window) {
$rootScope.$on('$routeChangeError', function () {
$window.history.back();
});
});And here's a demo Plunk
https://stackoverflow.com/questions/21410904
复制相似问题