AngularJS $资源只会返回数据

时间:2014-04-01 20:49:30

标签: javascript angularjs angularjs-service angular-services

因此,对于工厂,我使用$ resource发出RESTful GET请求,而且我没有收到数据。

最初,我收到$ promise和$ resolved:false。 $ resolved最终成为现实。

我知道网址和标头是有效的,因为我在高级客户端Chrome扩展程序中对它们进行了测试,并且工作正常。数据显示和一切。

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

3 个答案:

答案 0 :(得分: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;
}]);

答案 1 :(得分:2)

您需要使用$resource的回调:

GetValues.get({}, function(data) {
    $scope.terms = data;
})

答案 2 :(得分: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