Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当简单对象可以';不能解决吗?_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript 当简单对象可以';不能解决吗?

Javascript 当简单对象可以';不能解决吗?,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我的一个角度ui路由器状态取决于正在解析的简单对象: .state(...) { ... resolve: { user: function ($rootScope) { if ($rootScope.user) { return $rootScope.user; } } } ... } 我想如果$rootScope.user对象不存在,那么用户依赖关系就无法解决,状态也不会改变。相反,即使$rootScope.user不

我的一个角度ui路由器状态取决于正在解析的简单对象

.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
不存在时,承诺将被拒绝,用户依赖关系不会得到解决,状态也不会更改


有没有办法不用承诺就能做到这一点?为什么?因为在这里使用承诺并不能明确表示需要解析简单的对象。

如果您知道
用户
应该具有
id
属性(例如),那么您可以检查
If($rootScope.user和typeof($rootScope.user.id)==number)
以解决问题object@AlonEitan我不太明白你的意思。你能详细说明一下吗?知道用户何时定义或何时未定义不是我面临的问题。在第一个函数中,不管发生什么情况,用户依赖关系都会得到解决。我正在寻找一种在未定义$rootScope.user时拒绝该依赖关系的方法。我能弄明白这一点的唯一方法是使用承诺。我强烈建议您为此使用service/factory,使用
$rootScope
在控制器之间共享数据不是一个好的做法。这些数据可以很容易地被覆盖(引用),基于我阅读和尝试的所有内容,您不能使用
app.config()
中的服务。对吗?而且,这不是真正的问题。我只想在简单对象不存在时解析失败。不,但这是在解析中,您可以在那里(在解析函数中)插入一个服务-对于您实际要求的内容,如果您知道
用户
应该具有
id
属性(例如),希望其他人会发布解决方案,然后,您可以检查
是否($rootScope.user和typeof($rootScope.user.id)==number)
来解决问题object@AlonEitan我不太明白你的意思。你能详细说明一下吗?知道用户何时定义或何时未定义不是我面临的问题。在第一个函数中,不管发生什么情况,用户依赖关系都会得到解决。我正在寻找一种在未定义$rootScope.user时拒绝该依赖关系的方法。我能弄明白这一点的唯一方法是使用承诺。我强烈建议您为此使用service/factory,使用
$rootScope
在控制器之间共享数据不是一个好的做法。这些数据可以很容易地被覆盖(引用),基于我阅读和尝试的所有内容,您不能使用
app.config()
中的服务。对吗?而且,这不是真正的问题。我只想在简单对象不存在时解析失败。不,但这是在解析中,您可以在那里(在解析函数中)插入一个服务-对于您实际要求的,希望其他人会发布解决方案