如何为特定天气状况加载图标? (AngularJS)

时间:2015-03-23 20:51:06

标签: javascript json angularjs

我正在开发一个天气应用程序作为个人项目。我已完成应用程序的基础,我向Yahoo Weather API发出HTTP get请求,并返回我想要的数据。

但是我仍然坚持下一步,在当前条件下加载图标。

我在我的"模型中设置了一个JSON文件"文件夹,它看起来像这样:

[

 {
    "code": 32,
    "icon": "img/sunny.png",
    "text": "Sunny"
 },

 {
    "code": 26,
    "icon": "img/cloudy.png",
    "text": "Cloudy"
 }

]

这是我在主控制器中的要求(不确定我是否正确行事)。

    $http.get('models/conditions.json') 
        .success(function(data) {
            vm.condition = data;

        }).error(function(err) {
            console.log(err);
        });

在视图中,我使用ng-if和ng-src指令的组合来尝试加载图标。再说一遍,我没有做对。

<img ng-if="main.place.item.conditons.code === main.conditions.code" ng-src="{{main.conditions.icon}}">

关于如何让它发挥作用的任何想法?我是在正确的轨道上吗?谢谢你的回答!

1 个答案:

答案 0 :(得分:0)

您说正在正确检索JSON,因此问题在于您尝试将数组用作ng-src标记的对象。你有{{main.conditions.icon}},假设条件是你检索的JSON,你必须指定一个数组索引,但是,你可能不想这样做,因为你没有办法了解什么指数与天气代码有关。

对此的解决方案可以有几种不同的方式。例如,如果可能,您可以将JSON数据更改为以下形式的对象:

{
    "32": {
        "icon": ...,
        "text": ...
    },
    "26": {
        "icon": ...,
        "text": ...
    }
}

如果您能够这样做,那么您可以使用条件作为对象并执行:

<img ng-src="{{main.conditions[main.place.item.conditions.code].icon}}">

当然,这是假设条件属性在&#34; main.place.item&#34;对象也不是一个数组,如果是这样,你将不得不进一步调整。另外,我假设您输入了一个拼写错误,因为您的问题中的条件拼错了ng-if属性。