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