2016-08-15 41 views
0

我试图用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,我得到这个:

screenshot

我不能使用常规对象表示法来访问属性,返回undefined。

如何访问返回对象上的属性?

回答

0

您的资源正在退回承诺。您需要解决该承诺才能访问返回的数据。

function fetchRealTimeData() { 
    return dataFactory.getData(requestParameters) 
    .then(function (data) { 
     return data; 
    }); 
} 

你这样做的方式,你返回的是实际承诺对象,而不是来自承诺的解析数据。您可以在控制台中看到数据的原因是因为它在注销时已经解决了,但是当您尝试使用点符号访问它时,该承诺仍然没有解决,并且您未定义。