因此,对于工厂,我使用$ resource发出RESTful GET请求,而且我没有收到数据。
最初,我收到$ promise和$ resolved:false。 $ resolved最终成为现实。
我知道网址和标头是有效的,因为我在高级客户端Chrome扩展程序中对它们进行了测试,并且工作正常。数据显示和一切。
这是我的工厂设置,下面是我在控制器中引用的内容,用于将其存储在范围变量中。
答案 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