angularjs – 为什么这个工厂返回$$状态对象而不是response.data?

前端之家收集整理的这篇文章主要介绍了angularjs – 为什么这个工厂返回$$状态对象而不是response.data?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我在服务器中有一组对象,我想在页面加载时填充ng-repeat.

我有一个工厂从服务器上的资源中获取列表,如下所示:

app.factory('objectArray',['$http',function($http) {
      // This is returning a $$state object
      // instead of response.data...
      return $http.post('/get_collection').then(function(response) {
          console.log(response.data);
          return response.data;
      });
  }]);

在使用ui-router和state声明中的resolve属性之前,我已经有了这个代码.但是当将这个工厂直接注入我的控制器时,而不是获得response.data我得到一个$$状态对象.

我的控制器看起来像这样:

app.controller('applicationController',['$scope','objectArray',function($scope,objectArray) {
     $scope.array = objectArray;
     console.log($scope.array);
 }]);
$http服务返回的内容(因此objectArray服务是)被称为promise.您可以通过注册在数据可用时调用的回调函数来访问实际数据,即当对http请求的响应从服务器返回时:
objectArray.then(function(data) {
    $scope.array = data;
});

使用resolve时直接访问数据的原因是路由器在resolve函数返回promise时等待promise的解析.只有这样,它才会从promise中提取数据并将数据注入控制器.

为了更好地理解承诺,您可以阅读the following article(及其sequel).

猜你在找的Angularjs相关文章