Angular $资源调用无法提供完整数据

时间:2016-01-25 04:13:16

标签: javascript angularjs api

有人可以告诉我为什么我会得到以下内容:

在我的控制器中,我正在使用Angular资源指令正常调用API。

$scope.weatherAPI = $resource('http://api.openweathermap.org/data/2.5/forecast/daily', {callback: 'JSON_CALLBACK'}, {get: {method: 'JSONP'}});
$scope.weatherResult = $scope.weatherAPI.get({ q: $scope.city, cnt: 4, APPID: 'xxxxxx' });

将结果打印到控制台。

console.log($scope.weatherResult);
console.log($scope.weatherResult.city)

console.log("scope weatherResult " + $scope.weatherResult);
console.log("scope weatherResult.list: " + $scope.weatherResult.list);
console.log("scope weatherResult.city: " + $scope.weatherResult.city);

但这是结果。正如您所看到的那样,当我尝试定位其中一个属性时,$scope.weatherResult对象即将到来,我得到undefined,因此无法使用该数据。

the results from the console

1 个答案:

答案 0 :(得分:1)

来自文档:

  

重要的是要意识到调用$resource对象方法会立即返回一个空引用(对象或数组,具体取决于isArray)。从服务器返回数据后,现有参考将填充实际数据

- AngularJS $resource API Reference

使用.then对象$promise属性的$resource方法为$q服务提供一个等待数据解析的函数。

$scope.weatherAPI = $resource('http://api.openweathermap.org/data/2.5/forecast/daily', {callback: 'JSON_CALLBACK'}, {get: {method: 'JSONP'}});
$scope.weatherResult = $scope.weatherAPI.get({ q: $scope.city, cnt: 4, APPID: 'xxxxxx' });

$scope.weatherResult.$promise.then (function onFulfilled(data) {
    console.log(data);          
    console.log(data.city);

    console.log("scope weatherResult " + $scope.weatherResult);
    console.log("scope weatherResult.list: " + $scope.weatherResult.list);
    console.log("scope weatherResult.city: " + $scope.weatherResult.city);
});