Angular $资源无法提供正确的数据

时间:2017-11-21 04:37:04

标签: javascript angularjs jsonp

在我的控制器中,我正在进行以下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)
}]);

我得到了一个承诺,但它没有返回正确的信息,也无法获取数据。

Error

我认为问题在于我如何将API密钥插入到通话中。有人有什么想法吗?

1 个答案:

答案 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不需要状态(?如果我错了,有人纠正我)。所以我删除了州,并将其与城市分开 - >即“纽约”,“新奥尔良”,“伦敦”等。

这似乎正在用正确的数据回复承诺。