Javascript Angular js ui路由器跳过$state.go

Javascript Angular js ui路由器跳过$state.go,javascript,angularjs,routing,angular-ui-router,Javascript,Angularjs,Routing,Angular Ui Router,如果用户未登录,我的AngularJs应用程序应该转到登录页面,并尝试加载需要登录用户的路径 if ($localStorage.globals.access_token) { $rootScope.globals = $localStorage.globals; $state.go('app.dashboard-v1'); }else{ $state.go('access.signin) } 每当应用程序加载时,就会执行这段代码。问题是,当我试图访

如果用户未登录,我的AngularJs应用程序应该转到登录页面,并尝试加载需要登录用户的路径

if ($localStorage.globals.access_token) {
    $rootScope.globals = $localStorage.globals;
    $state.go('app.dashboard-v1');
  }else{
    $state.go('access.signin)      
  }

每当应用程序加载时,就会执行这段代码。问题是,当我试图访问一个需要登录用户的路径时,它不是重定向到登录页面,而是转到该特定路径。更令人困惑的是,它开始将状态更改为登录页面(access.signin),但从未成功,然后启动特定路径(这里我试图通过其url访问app.dashboad-v1状态),然后继续。我做错了什么

我终于纠正了这个问题。返回对UI路由器“解析”的承诺,因此转换失败并重定向到所需状态(access.signin)

您能告诉我们if语句是如何触发的吗?通常,我们会通过向状态的解析器函数返回拒绝的承诺来中止需要登录用户的路径。使用UI路由器0.x的
$stateChangeError
错误事件转到登录页面。对于UI路由器1.x,使用转换挂钩。请参阅。@B将用户凭据存储在附加到$localstorage的密钥中。注销时,密钥被清除为空对象,因此,一旦路径被重新加载,该“如果”条件将计算为false,因为没有名为“access_token”的密钥。