3

因此,对于一家工厂,我正在使用 $resource 发出 RESTful GET 请求,但我没有取回数据。

最初,我返回 $promise 和 $resolved: false。$resolved 最终变为真。

我知道 url 和 header 工作,因为我在高级客户端 chrome 扩展中测试了它们,它工作正常。数据是展示和一切。

这是我的工厂设置,下面是我在控制器中引用的内容,以将其存储在范围变量中。

4

3 回答 3

3

$resource 返回一个两级对象。在您的控制器中,它需要像这样处理:

$scope.terms = GetValues.get();
$scope.terms.$promise.then(function(data){
     //This is where things that happen upon success go
}, function(data){
     //This is where things that happen upon error go
});

您还可以编写您的服务返回如下,并从您的控制器中消除 $promise:

.factory('GetValues', ['$resource', function($resource){
// search term is :text
return $resource(apiURL,   {}, {
    get:{
      method: 'GET',
      isArray:true,
      headers: {
          'x-auth-token': 'xxxxx',
          'x-auth-user':  'xxxxx'
      }
    }
  }).$promise;
}]);
于 2014-04-01T21:01:45.727 回答
2

您需要利用以下回调$resource

GetValues.get({}, function(data) {
    $scope.terms = data;
})
于 2014-04-01T20:51:38.293 回答
1

$resource 构造函数返回一个对实际调用的承诺。您必须在控制器中为 promise 设置解析回调。

GetValues.get({}, '', function (getResult) {
    // do something with array
    alert(getResult);
}, function (error) {
    console.error('Error getting values', error);
});

第二个函数是请求的错误回调。

另外,尝试使用另一个名称注册该方法,因为覆盖需要对象而不是数组的本机 get 并不是很“好”:

return $resource(apiURL,{},{ getValues:{
    method: 'GET',... 

并使用调用它

GetValues.getValues().then(... 

PD:不需要显式返回 .$promise

于 2014-04-02T00:22:44.523 回答