You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于AngularJS的城市天气查询、经纬度获取及数据持久化问题求解

AngularJS城市天气查询功能修复方案

一、经纬度显示功能修复

问题原因:1. OpenWeatherMap接口返回值的coord字段本身包含经纬度,原service层没有把该字段返回给控制器;2. 页面绑定的经纬度变量未定义,也没有绑定到控制器实例vm上。

1. 修改weatherService.js返回值

找到sendResponseData方法中的return逻辑,新增经纬度字段返回:

return {
  // 原有字段保留
  City: data.name,
  Temperatures: GetTemperatures(data.main),
  Temperatures1: GetTemperatures(data.main),
  // 新增经纬度字段
  lat: data.coord.lat,
  lon: data.coord.lon
}

2. 修改script.js查询回调

两个查询方法SearchC和SearchF的成功回调中,新增经纬度赋值,同时加入后续持久化需要的存储逻辑:
以SearchC为例,SearchF同步修改即可:

weatherService.GetWeather(vm.query)
  .then(function(data) {
    // 原有赋值保留
    vm.City = data.City;
    vm.Temperatures = data.Temperatures;
    // 新增经纬度赋值
    vm.lat = data.lat;
    vm.lon = data.lon;
    // 新增数据持久化存储
    localStorage.setItem('weatherData', JSON.stringify({
      query: vm.query,
      City: vm.City,
      Temperatures: vm.Temperatures,
      Temperatures1: vm.Temperatures1 || [],
      lat: vm.lat,
      lon: vm.lon,
      ValidDataLoaded: true
    }));
    vm.ValidDataLoaded = true;
  })

3. 修改index.html绑定逻辑

首先删掉会导致页面循环加载的无效代码<div ng-include="'index.html'" ng-show="vm.ValidDataLoaded"></div>,再修改经纬度的绑定变量:

City: <span>{{vm.query}}</span>  <br>
<span>Latitude: {{vm.lat}}</span><br>
<span>Longitude: {{vm.lon}}</span><br>

二、页面刷新数据持久化实现

使用原生localStorage实现,无需引入额外依赖,在控制器初始化时读取本地存储的已有数据,有数据直接渲染无需重新查询:
在script.js控制器逻辑最开头新增初始化读取逻辑:

var vm = this;
// 新增:初始化读取本地存储数据
var localData = localStorage.getItem('weatherData');
if (localData) {
  var parseData = JSON.parse(localData);
  vm.query = parseData.query;
  vm.City = parseData.City;
  vm.Temperatures = parseData.Temperatures;
  vm.Temperatures1 = parseData.Temperatures1;
  vm.lat = parseData.lat;
  vm.lon = parseData.lon;
  vm.ValidDataLoaded = parseData.ValidDataLoaded;
}
// 后面保留原有的SearchC、SearchF方法

三、其他小问题修复

现有index.html中Enter city:前面有一个多余的</form>闭合标签,直接删除即可,避免表单逻辑异常。

内容的提问来源于stack exchange,提问作者Nancy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:21:01