当无法解析简单对象时,停止angular-ui-router状态更改?

时间:2016-04-15 16:54:57

标签: javascript angularjs angular-ui-router

我的一个angular-ui-router状态取决于简单对象正在解决:

.state(...) {
  ...
  resolve: {
    user: function ($rootScope) {
      if ($rootScope.user) {
        return $rootScope.user;
      }
    }
  }
  ...
}

我认为如果$rootScope.user对象不存在,则无法解析用户依赖关系,状态也不会改变。相反,即使$rootScope.user不存在,用户也会被解析为空对象{},状态确实会发生变化。

$rootScope.user不存在时,有没有办法让解决失败?也许通过在else块中返回一个特定值来表示依赖关系无法解析?

我可以使用承诺

拒绝它
resolve: {
  user: function($q) {
    return $q(function (resolve, reject) {
      if ($rootScope.user) {
        resolve($rootScope.user);
      }
      else {
        reject();
      }
    }
  }
}

在这种情况下,如果$rootScope.user不存在,则拒绝承诺,不解析用户依赖关系,并且状态不会更改。

有没有办法在没有承诺的情况下做到这一点?为什么?因为在这里使用promise并不清楚需要解决一个简单的对象。

0 个答案:

没有答案