有人可以告诉我为什么我会得到以下内容:
在我的控制器中,我正在使用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
,因此无法使用该数据。
答案 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);
});