我有一个具有以下结构的休息角度的服务
function countrySvc(restangular) {
restangular.addResponseInterceptor(function (data, operation, what, url, response, deferred) {
if (operation === 'getList') {
var newResponse = response.data;
return newResponse;
}
return response;
});
var baseCountry = restangular.all('country');
this.countries = function() {
baseCountry.getList();
};
}
也是一个控制器
function countryCtrl(scope, countrySvc) {
scope.countries = countrySvc.countries();
}
但是当我从控制器访问国家/地区时,结果是空的并且数据成功请求,我的问题是如何从具有正确承诺模式的响应中提取数据,即(当我访问范围时我需要一组国家/地区) .countries)
答案 0 :(得分:8)
你需要解决承诺......
有两种方法可以做到......
1)使用$object
只需将.$object
添加到承诺的结尾,这样一旦请求完成,它就会解决承诺......
scope.countries = countrySvc.countries().$object;
2)使用then
如果您需要在承诺解决后需要做一些事情,请选择此选项,一旦请求完成,then
中的回调函数将被解雇
scope.countries = countrySvc.countries().then(function (response){
// DO SOMETHING IF YOU NEED BEFORE SET OBJECT
scope.countries = response;
// DO SOMETHING IF YOU NEED AFTER SET OBJECT
});