因此,对于一家工厂,我正在使用 $resource 发出 RESTful GET 请求,但我没有取回数据。
最初,我返回 $promise 和 $resolved: false。$resolved 最终变为真。
我知道 url 和 header 工作,因为我在高级客户端 chrome 扩展中测试了它们,它工作正常。数据是展示和一切。
这是我的工厂设置,下面是我在控制器中引用的内容,以将其存储在范围变量中。
因此,对于一家工厂,我正在使用 $resource 发出 RESTful GET 请求,但我没有取回数据。
最初,我返回 $promise 和 $resolved: false。$resolved 最终变为真。
我知道 url 和 header 工作,因为我在高级客户端 chrome 扩展中测试了它们,它工作正常。数据是展示和一切。
这是我的工厂设置,下面是我在控制器中引用的内容,以将其存储在范围变量中。
$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;
}]);
您需要利用以下回调$resource
:
GetValues.get({}, function(data) {
$scope.terms = data;
})
$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