2014-10-08 3 views
0

Мне просто любопытно, как получить доступ к любому полю в этом вызове JSON, поскольку он имеет несколько объектов и очень запутан, так как я впервые с этим занимаюсь. Вот ссылка на JSON: http://api.wunderground.com/api/5ad0204df4bdbeff/forecast/q/Australia/Sydney.json?callback=JSON_CALLBACKJSON AngularJS несколько объектов

В моем коде используется AngularJS для вызова JSON, а затем его сохранения. Связанное значение затем получает доступ к нему путем циклического перехода.

<!DOCTYPE html> 
<html ng-app="plunker"> 

    <head> 
    <meta charset="utf-8" /> 
    <title>AngularJS Plunker</title> 
    <script>document.write('<base href="' + document.location + '" />');</script> 

    <script data-require="[email protected]" src="https://code.angularjs.org/1.2.25/angular.js" data-semver="1.2.25"></script> 
    <script > 

    var app = angular.module('plunker', []); 

app.controller('MainCtrl', function($scope, $http) { 
    $http.jsonp('http://api.wunderground.com/api/5ad0204df4bdbeff/forecast/q/Australia/Sydney.json?callback=JSON_CALLBACK').success(function(data){ 
    console.log(data); 
    $scope.weatherData=data; 
    }) 
}); 
    </script> 
    </head> 

    <body ng-controller="MainCtrl"> 
    <ul> 
     <li ng-repeat="weather in weatherData"> 
      {{weather.celsius}} 
     </li> 
    </ul> 
    </body> 

</html> 

По существу, я хочу получить доступ к объекту "simpleforecast", а затем получить доступ к температурной области. Как я могу это сделать?

+0

Что вы получаете в console.log (данные); ? – Artemis

+0

Объект {ответ: Объект, прогноз: Объект}, но вы можете развернуть его далее – Indrick

+0

, чтобы вы могли просто пройти через свойства в виде объекта и, наконец, увидеть на экране. Как weatherData.forecast.somePropertyHere – Artemis

ответ

1

EDIT: Я сделал скрипку для вас, чтобы продемонстрировать использование с помощью ng-repeat. Вот FIDDLE

Должно быть так:

<ul> 
    <li ng-repeat="forecast in weatherData.forecast.simpleforecast.forecastday"> 
     <br/>date: {{forecast.date.pretty}} 
     <br/>high: {{forecast.high.celsius}}, 
     <br/>low: {{forecast.low.celsius}} 
    </li> 
</ul> 

Я рекомендую использовать некоторые JSON инструмент просмотра/форматтера, чтобы найти данные, которые вы хотите от сложного JSON. На самом деле я нашел его с помощью that инструмент.

Чтобы получить сегодняшние низкие и высокие температуры

data.forecast.simpleforecast.forecastday[0].high.celsius 

data.forecast.simpleforecast.forecastday[0].low.celsius 

Также сервис предоставляет 4 дня погоды, если вы хотите их изменить индекс прогноза дня. 0 сегодня, 1 завтра и так далее.

+0

Я попробовал ваш метод, но ему, похоже, не нравится – Indrick

+0

Исправлена ​​опечатка по Цельсию. Также добавлена ​​рабочая скрипка для демонстрации использования с помощью ng-repeat. –

+0

ahh ok Я знаю, что я делал неправильно при тестировании. Я помещал weatherData.forecast.simpleforecast.forecastday в {{}} – Indrick

0
<li ng-repeat="weather in weatherData.forecast.forecast.simpleforecast"> 
    {{weather.forecastday[0].high.celsius}} 
    {{weather.forecastday[0].low.celsius}} 
</li> 
+0

это не работает по какой-то причине :( – Indrick

+0

try {{weather.forecastday [0] .high .celsius}} –

Смежные вопросы