AngularJS $位置服务和"返回"按键

时间:2015-11-15 11:45:29

标签: javascript angularjs

例如,当前网址为" http://localhost/#/mail"。我做了一些动作,我想转到下一个网址:

$location.path("mail/inbox/3")

效果很好。我在另一个带有其他URL的控制器中。但当我点击"返回"浏览器按钮我希望返回到" mail"路线,但我没有去过"邮件/收件箱"路线。为什么?我该如何解决?因为这对我来说不对。谢谢。

1 个答案:

答案 0 :(得分:1)

当你解雇这个孩子时:

$location.path("mail/inbox/3")

记住它遍历when('mail')when('mail/inbox')以到达when('/mail/inbox/:number')。路线来自mail -> inbox -> #3。这就是为什么当你回击它时会转到mail/inbox

这是一个混乱的情况。事情很简单,ng-routerui-router很好,但随着应用程序的增长,像你这样的bug是不可避免的。

在我的项目中,我使用html5Mode禁用了$locationProvider.html5Mode(false);,基本上禁用了后退按钮。并在App中添加自定义后退按钮,供用户导航回来。

此解决方案有助于:

  • 用户根本无法使用后退按钮,因此无法达到不需要的状态
  • 有时可以配置或隐藏自定义后退按钮。基于当前应用状态在同一视图上执行不同预编码的事件代码。
  • 隐藏用户的应用内部网址,以避免该应用被用于不应该看到的数据。

我希望这会有所帮助。