从开放天气地图获取JSON

时间:2015-10-01 15:17:30

标签: arrays json angularjs github

我正在为自己的教育接受Angular。我一直在关注CodeAcademy和PluralSight的教程(即 AngularJS:入门流)。

我很抱歉在这里很尴尬,但我对两个不同的项目有两个错误。我不想写两个新主题,因为它们很小但我无法理解它。

未知错误 我知道这个问题,但我不知道为什么它正在发生。我在这里和网上搜索了网站,并尝试了建议的修复,但它没有为我做任何事情,所以我恢复到我拥有它的状态。我目前正在学习自定义服务并试图为github查看器添加一个。

我得到的错误是:.rc。我检查了脚本中的行,我看不出有什么问题(我直接从教程中看到它,并且没有在线修复工作。我的代码是:http://plnkr.co/edit/IipX8a09PzX4iUZdVutS?p=preview

我认为我的依赖项是错误的,但我不确定原因!

JSON问题 我决定做一个小应用程序从openweathermap网站提取天气数据。 (我在TutorialsPoint上看到了一个不同的天气应用程序并想尝试自己的应用程序。)

可在此处找到JSON文件:http://api.openweathermap.org/data/2.5/forecast?q=Galway,ie&mode=json

我的代码可以在这里找到:http://plnkr.co/edit/RaMkbx1zqwlJsbZrwueQ?p=info

(当我在本地使用http-server托管它时,它工作得很好,所以我不确定为什么plnkr会给出它!)

当我尝试访问更深的数组(列表)时,它无法识别任何内容。上面的阵列(城市)不是很麻烦!

结论 我正在努力学习Angular,所以没有时间约束或任何东西。即使你能帮助我明白为什么我错了,我也会非常感激!

谢谢。

2 个答案:

答案 0 :(得分:1)

在我看来,最好创建两个单独的问题,因为问题一共发生在两个单独的项目中。

看起来第一个问题是由于错误annotating MainController上的依赖关系 - 您将$http服务作为名为github的变量。

MainController定义中的注释更改为此可解决该问题:

app.controller("MainController", ["$scope", "$http", "$interval", "$log", "$location","$anchorScroll", "github", MainController]);

基本上,命名依赖项(注释)应该与名为MainController的函数上的参数匹配,这是:

var MainController = function($scope, $http, $interval, $log, $location, $anchorScroll, github) {
  // ....
};

这是一个工作的掠夺者 - http://plnkr.co/edit/vX0AGv?p=preview

如果我能够找出你的第二个问题,我会将解决方案添加到这个答案中。

编辑:对于第二个问题,当您移植工作时,您似乎没有更新script.jsstyle.cssindex.html的路径代码进入Plunker

这些行似乎有效(updated plunker

<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>

EDIT(2015年10月5日):正如下面的评论所述,还有另一个错字导致第一个问题的解决方案无法从GitHub加载存储库。这是纠正错字的插件:http://plnkr.co/edit/1rxqQ3?p=preview

答案 1 :(得分:1)

从开放天气地图获取JSON数据的示例:

angular.module('myApp').controller('myVm', function($scope, $http) {
    var vm = $scope;
    vm.lat=37, vm.lon=35;
    vm.getWeather = function(lat, lon) {
         console.log("getWeather invoked with",lat,lon);
         if (vm.data == "pending") return ["pending"];
         var url = 'http://api.openweathermap.org/data/2.5/weather'
         vm.data = "pending";
         var p = $http.jsonp(url, { params : {
              lat : lat,
              lon : lon,
              callback: 'JSON_CALLBACK',
              APPID: 'xxxxxxxxxx'
         }});
         p.then (function (response) {
              vm.data = response.data;
         }).catch (function (error) {
              vm.data = "error "+error.status;
         })
         return ["GetWeather lat="+lat+" lon="+lon];
     };
});

DEMO on JSFiddle