为什么Angularjs资源返回承诺和解决



我有一个超级简单的服务返回JSON列表:

angular.module('hostService', ['ngResource']).
    factory('Host', function($resource){
      return $resource('/api/v1/host', {}, {
        'query':   {method:'GET',  isArray : true},
      });
  });

当我称呼它:

$scope.hosts = Host.query(function(d) {
    console.log(d);
});

我收到

[Resource, Resource, Resource, Resource, Resource, Resource, Resource, Resource, $promise: Object, $resolved: true]

最终胡说八道?我想迭代项目并做点什么:

$scope.hosts = Host.query(function(d) {
            for(i in $scope.hosts) {
                doSomething($scope.hosts[i]);
            }
        });

,但现在必须检查它们不是"承诺"或"解决"。

您正在尝试通过请求中的参数通过该函数。" $ Resource"返回一个承诺,当您从服务器返回结果时,您可以使用结果进行迭代:

您需要注入$log才能使下面的代码

Host.query().$promise.then(
  //success
  function(results) {
    $scope.hosts = results;
    results.forEach(results, function(val,key) { $log.info(key + ' : ' + val); });
  },
  //error
  function(err) {
    $log.error(err);
  }
);

最新更新