我的一个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并不清楚需要解决一个简单的对象。