《移动软件开发》实验二天气查询小程序实验报告
一、实验目标
1、学习使用快速启动模板创建小程序的方法;2、学习不使用模板手动创建小程序的方法。
二、实验步骤
列出实验的关键步骤、代码解析、截图。
添加 picker(地区选择器)、text(文本)、image(图片)和多层嵌套 view 组件
通过 class 指定容器样式类名(container、detail、bar、box 等)
在 wxss 文件中使用 flex 布局设置页面整体结构和元素样式
在 data 中初始化变量(region 存储地区信息,now 对象存储天气数据)
为 picker 组件绑定地区选择事件 bindregionChange,当选择地区后触发
注册和风天气并获取API
在 bindregionChange 函数中更新选中的地区信息,并调用 getWeather 函数获取天气数据
在 getWeather 函数中,先调用地理编码 API 将地区转换为 locationId
使用 locationId 调用天气 API 获取实时天气数据
将获取到的天气数据更新到 data 中的 now 对象,实现页面数据绑定展示
通过数据绑定将 now 对象的属性(温度、天气状况、图标等)展示在对应组件上使用多层 view 嵌套和 class 命名实现网格状天气详情布局
-
data 中初始化了默认地区(北京市)和天气数据结构
-
bindregionChange 函数用于处理地区选择变化,更新 region 并调用 getWeather
-
getWeather 函数实现了两步 API 调用:
-
先通过地理编码 API 将地区名称转换为 locationId
-
再使用 locationId 调用天气 API 获取实时天气数据
-
-
使用 that 保存 this 上下文,确保在回调函数中正确更新页面数据
-
成功获取天气数据后,通过 setData 更新 now 对象,实现页面数据刷新
-
onLoad函数通过调用getWeather函数保证每次初始化后显示的数据均为默认地址的数据
-
-
全局 text 样式设置了较大字号和蓝色,突出显示温度信息
-
box 类设置宽度为 33.3%,实现三列等分布局
-
bar 类使用横向 flex 布局,实现每行三个元素的排列
-
detail 类设置为 100% 宽度,内部元素垂直排列
-
container 类使用 flex 布局,使页面元素垂直排列并均匀分布
- image 组件通过动态路径
/images/weather_icon/{{now.icon}}.png
显示对应天气图标 - 天气数据通过 {{now. 属性名}} 的方式绑定到对应组件
- 通过 {{region}} 绑定显示当前选择的地区
- 使用 picker 组件并设置 mode=\'region\' 实现省市区三级选择
三、程序运行结果
列出程序的最终运行结果及截图。
四、问题总结与体会
描述实验过程中所遇到的问题,以及是如何解决的。有哪些收获和体会,对于课程的安排有哪些建议。
-
地理编码 API 无有效数据
-
现象:部分地区(如 “石家庄长安区”)无法返回
locationId
,天气 API 断连。 -
解决:补充
adm
参数明确上级市,添加默认城市(北京),避免无数据空白。
-
-
天气图标加载失败
-
现象:图标显示 “裂图”,控制台报 404。
-
解决:统一图标文件名为 “纯数字.png”(如 101.png),匹配 API 返回的
icon
代码,补充缺失图标。
-
-
数据驱动视图的高效性:仅通过
setData
更新now
对象,页面自动同步渲染,无需手动操作 DOM,深刻体会小程序 “数据变则视图变” 的便捷性。 -
API 调用需重视异常处理:密钥失效、地区识别失败等问题频发,需设置默认值、捕获
fail
错误、阅读 API 文档,避免流程中断或用户无感知。