【问题标题】:Angular js ui-router skipping $state.goAngular js ui-router 跳过 $state.go
【发布时间】:2018-05-30 17:32:13
【问题描述】:

如果用户未登录,我的 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 状态)然后成功。我在这里做错了什么?

【问题讨论】:

  • 你能告诉我们 if 语句是如何被触发的吗?
  • 通常通过向状态的解析器函数返回一个被拒绝的承诺来中止需要登录用户的路径。使用 UI-Router 0.x 的 $stateChangeError 错误事件转到登录页面。对于 UI Router 1.x,使用转换挂钩。见UI-Router Wiki - State Change Events
  • @BShaps 我将用户凭据存储在附加到 $localstorage 的密钥中。在注销时,该键被清除为空对象,因此一旦重新加载路径,此“IF”条件评估为假,因为没有名为“access_token”的键。

标签: javascript angularjs routing angular-ui-router


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-02
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多