我正在开发一个天气应用程序作为个人项目。我已完成应用程序的基础,我向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}}">
关于如何让它发挥作用的任何想法?我是在正确的轨道上吗?谢谢你的回答!
答案 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属性。