当前位置: 首页 > news >正文

UniApp 多个异步开关控制教程

UniApp 多个异步开关控制教程(uView 1.0 / Vue2 版本)

📘 教程简介

本文介绍如何在 UniApp + uView1.0 + Vue2 中实现 多个异步控制的开关组件
每个开关可独立进行异步状态切换(例如调用后端接口),并在切换时显示加载状态。


🚀 效果演示

页面包含多个开关(如“设备1”、“设备2”…),用户点击切换时:

  1. 显示加载动画;
  2. 异步等待接口响应;
  3. 后端返回成功后更新状态。

🧩 完整示例代码

<template><view class="switch-list"><view class="switch-item" v-for="(item, index) in switchList" :key="item.id"><text>{{ item.name }}</text><u-switch:value="item.checked":loading="item.loading"@change="onSwitchChange(index, $event)"></u-switch></view></view>
</template><script>
export default {data() {return {switchList: [{ id: 1, name: '设备1', checked: true,  loading: false, controlStatus: false },{ id: 2, name: '设备2', checked: false, loading: false, controlStatus: false },{ id: 3, name: '设备3', checked: true,  loading: false, controlStatus: false }]};},methods: {onSwitchChange(index, val) {const item = this.switchList[index];if (item.controlStatus) {item.controlStatus = false;return;}item.loading = true;item.controlStatus = true;item.checked = !val;this.getResultFromServer(index, val);},getResultFromServer(index, targetStatus) {const item = this.switchList[index];setTimeout(() => {item.loading = false;item.controlStatus = true;item.checked = targetStatus;uni.showToast({title: `开关【${item.name}】已${targetStatus ? '开启' : '关闭'}`,icon: 'none'});}, 1500);}}
};
</script><style scoped>
.switch-list {padding: 20rpx;
}
.switch-item {display: flex;justify-content: space-between;align-items: center;padding: 20rpx 0;border-bottom: 1px solid #eee;
}
</style>

🔧 接口调用替换

如需调用真实后端接口,将 setTimeout 替换为:

uni.request({url: 'https://your.api/xxx',method: 'POST',data: { id: item.id, status: targetStatus },success: (res) => {item.loading = false;item.controlStatus = true;item.checked = targetStatus;},fail: () => {item.loading = false;item.controlStatus = false;uni.showToast({ title: '操作失败', icon: 'none' });}
});

✅ 教程总结

通过本示例,你可以:

  • 支持多个 u-switch 组件独立异步控制;
  • 使用 loading 状态防止重复点击;
  • 结合 controlStatus 避免循环触发;
  • 简单拓展为真实后端接口交互。

作者:ChatGPT(GPT-5)
更新时间:2025-11-08

http://www.dtcms.com/a/585444.html

相关文章:

  • 邯郸哪家公司做企业网站比较专业中国制造网是干什么的
  • 做视频网站把视频放在哪里wordpress建站用什么意思
  • ASP.NET Core Web 应用SQLite数据连接显示(1)
  • 网易门户网站建设网站建设及发布的流程
  • 基于python的jlink单片机自动化批量烧录工具
  • 从三路快排到内省排序:探索工业级排序算法的演进
  • CPP 学习笔记 语法总结
  • Qt 跨平台 2048 游戏开发完整教程 (含源码)
  • SortScope 排序算法可视化
  • 组件库引入
  • 手写Spring第25弹:Spring JdbcTemplate深度解析:数据操作如此简单
  • 《Python 小程序编写系列》(第一部):从零开始写一个猜数字游戏
  • 【完整源码+数据集】草莓数据集,yolov8草莓成熟度检测数据集 3207 张,草莓成熟度数据集,目标检测草莓识别算法系统实战教程
  • 英特尔网站开发框架视频教学互动网站建设
  • DeepSeek-OCR实战(01):基础运行环境搭建-RockyLinux
  • 测开学习DAY26
  • VBA经典应用69例应用9:读取工作表中个数不定的数据
  • 网站建设策划书5000字蚂蚁网站建设
  • 【Janet】比较运算符
  • 05 kafka 如何存储较大数据记录
  • 使用Unity ASE插件设置数值不会生效的问题
  • 【ZeroRange WebRTC】WebRTC 信令安全:实现原理与应用(深入指南)
  • 关于Flutter与Qt for python 的一些技术、开源、商用等问题
  • 国外免费建站网站不用下载设计师培训心得
  • 深入解析 LeetCode 1572:矩阵对角线元素的和 —— 从问题本质到高效实现
  • Android Input ANR分析
  • Dify 添加 Google cloud 模型供应商
  • 大语言模型提示词技巧总结
  • 高职无人机应用技术专业职业发展指南
  • 网站流量软件银行门户网站建设