2014-03-07 44 views
2

我有一個超級簡單的服務,返回JSON列表:爲什麼AngularJS資源返回承諾並解決?

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]); 
      } 
     }); 

,但現在必須檢查他們是不是「承諾」或「已解決」。

回答

-1

您試圖通過請求中的參數傳遞函數。 「$資源」返回一個承諾,你可以通過使用結果進行迭代時,他們從服務器返回:

你需要注入$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); 
    } 
);