我试图用angulars资源工厂获取数据,但我不太明白如何正确处理响应。
工厂:
function dataFactory($resource, ENV) {
return $resource('http://foo/bar', {
accountId: '@accountId'
},
{
getData: {
method: 'POST',
url: 'http://foo/bar',
headers: {
'Content-Type': 'application/json'
}
}
}
);
}
在服务中:
function fetchRealTimeData() {
return dataFactory.getData(requestParameters).$promise;
}
在我的指令中:
dataToApply = CdnAnalyticsService.fetchRealTimeData()
当我记录dataToApply时,我得到了这个:
我不能使用常规对象表示法来访问属性,返回undefined。
如何访问返回对象的属性?
答案 0 :(得分:0)
您的资源正在返回承诺。您需要解析该承诺才能访问返回的数据。
function fetchRealTimeData () {
return dataFactory.getData(requestParameters)
.then(function (data) {
return data;
});
}
您正在执行此操作的方式,您将返回实际的promise对象,而不是promise中已解析的数据。您可以在控制台中查看数据的原因是它在注销时已经解决,但是当您尝试使用点表示法访问它时,承诺仍未解决且您未定义。