我有route
,必须resolve
服务器端资源。该资源要求进行身份验证。所以我显示了一个可取消的登录表单弹出窗口。取消后,路线/解决方案会rejected
和$routeChangeError
正确触发。
问题是,我现在在地址栏中有一个失败的位置/网址和一个不必要的历史记录条目。
如何在不重新加载的情况下将当前位置网址替换为最后一位?如何在路由更改失败后删除当前的历史记录条目?
编辑: 我使用angular-http-auth。 这是我的路线:
/home
> /item
(必须解析需要身份验证的资源,如果没有登录登录窗体,弹出窗口会被取消)
当我取消身份验证时,$ routeChangeError被触发,我仍然在/home
由于/item
从未呈现的页面。现在地址栏显示错误的网址:/item
答案 0 :(得分:2)
您只需将历史记录中的一步发送回去即可。不要担心历史记录在那里,当它们导航到下一件事时它将被覆盖:
app.run(function($rootScope, $window) {
$rootScope.$on('$routeChangeError', function () {
$window.history.back();
});
});