在我的控制器中,我正在进行以下API调用:
weatherApp.controller('forecastController', ['$scope', '$resource', 'cityService', function($scope, $resource, cityService){
$scope.city = cityService.city;
$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)
}]);
我得到了一个承诺,但它没有返回正确的信息,也无法获取数据。
我认为问题在于我如何将API密钥插入到通话中。有人有什么想法吗?
答案 0 :(得分:0)
所以我设法解决了它,并得到了一个承诺,以下代码:
weatherApp.controller('forecastController', ['$scope', '$resource', 'cityService', function($scope, $resource, cityService){
$scope.city = cityService.city;
$scope.weatherAPI = $resource("http://api.openweathermap.org/data/2.5/weather/?APPID=d98c063da512b5ab03e39ac4a158b41f", {
get: {method: "JSONP"}});
$scope.weatherResult = $scope.weatherAPI.get({q: $scope.city, cnt: 5});
console.log($scope)
console.log($scope.weatherResult)
}]);
我删除了callback :'JSON_CALLBACK'
,因为它已被弃用,并会出错。我还从请求网址中删除了daily
,因为它已不再提供,并将其替换为forecast
,如API docs所示。现在,我以前把这个城市的一个参数放在“纽约,纽约”但是由于一些奇怪的原因,openweathermap api不需要状态(?如果我错了,有人纠正我)。所以我删除了州,并将其与城市分开 - >即“纽约”,“新奥尔良”,“伦敦”等。
这似乎正在用正确的数据回复承诺。