【问题标题】:Redirecting user to home page on state change (infinite loop error)在状态更改时将用户重定向到主页(无限循环错误)
【发布时间】:2015-08-10 00:46:45
【问题描述】:

我正在使用 UI 路由器和 Firebase。交易完成后,用户将被重定向到感谢页面。一段时间后,会话结束,用户被自动重定向到主页。

如果用户在此之前尝试离开感谢页面(例如,通过单击后退按钮),我想自动将用户重定向到主页。目标是拥有一个未经身份验证的干净应用程序。

当我使用以下代码时,出现最大堆栈大小错误:

.run(['$rootScope', 'Auth', '$state',  function($rootScope, $location, Auth, $state) {
  $rootScope.$on('$stateChangeStart',
    function (event, toState, toParams, fromState) {

      if (fromState.name === 'thankyou' && toState.name !== 'thankyou') {
        event.preventDefault();
        Auth.$unauth();
        $state.go('home'); 
      }
 })
}])

【问题讨论】:

    标签: angularjs angular-ui-router firebase


    【解决方案1】:

    问题

    包裹$state.go 行的条件将无条件地捕获自己。

    示例

    • 我们尝试从谢谢你页面导航到某个未指定的位置
    • 这种情况抓住了我们。我们在 thank you 页面上,我们不会进入 thank you 页面。最好将我们发送到主页
    • 嘿,我们又来了,尝试从谢谢页面导航到主页。会出什么问题?
    • 哦,不!这种情况再次抓住了我们。我们在谢谢你页面,但我们要去主页。那不是谢谢你页面,所以我们必须到主页...
    • 然后这个循环永远持续下去......

    解决方案

    将条件改为:

    if (fromState.name === 'thankyou' && toState.name !== 'home')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-02
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 2011-07-06
      相关资源
      最近更新 更多