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



我有一个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

最新更新