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

我有一个必须解析服务器端资源的路由.该资源要求进行身份验证.所以我显示了一个可取消的登录表单弹出窗口.取消时,路由/解析被拒绝,$routeChangeError正确触发.

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

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

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

/ home> / item(必须解析需要身份验证的资源,当未登录登录表单弹出窗口打开时可以取消)

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

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

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

And here’s a demo Plunk

点赞