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

微信小程序:实现单选,多选,通过变量控制单选/多选

一、实现单选功能

微信小程序提供了 radio 组件来实现单选功能。radio 组件需要配合 radio-group 使用。

1. WXML 代码

<radio-group bindchange="onRadioChange"><label wx:for="{{items}}" wx:key="id"><radio value="{{item.value}}" checked="{{item.checked}}" /> {{item.name}}</label>
</radio-group>

2. JS 代码

Page({data: {items: [{ id: 1, name: '选项A', value: 'A', checked: false },{ id: 2, name: '选项B', value: 'B', checked: false },{ id: 3, name: '选项C', value: 'C', checked: false }]},// 单选按钮变化事件onRadioChange(e) {const value = e.detail.value; // 获取选中的值const items = this.data.items.map(item => {item.checked = item.value === value; // 更新选中状态return item;});this.setData({ items });console.log('选中的值:', value);}
});

3. 实现效果

  • 用户只能选择一个选项。

  • 选中的值会通过 onRadioChange 事件返回。


二、实现多选功能

微信小程序提供了 checkbox 组件来实现多选功能。checkbox 组件需要配合 checkbox-group 使用。

1. WXML 代码

<checkbox-group bindchange="onCheckboxChange"><label wx:for="{{items}}" wx:key="id"><checkbox value="{{item.value}}" checked="{{item.checked}}" /> {{item.name}}</label>
</checkbox-group>

2. JS 代码

javascript

Page({data: {items: [{ id: 1, name: '选项A', value: 'A', checked: false },{ id: 2, name: '选项B', value: 'B', checked: false },{ id: 3, name: '选项C', value: 'C', checked: false }]},// 多选按钮变化事件onCheckboxChange(e) {const values = e.detail.value; // 获取选中的值数组const items = this.data.items.map(item => {item.checked = values.includes(item.value); // 更新选中状态return item;});this.setData({ items });console.log('选中的值:', values);}
});

3. 实现效果

  • 用户可以选择多个选项。

  • 选中的值会通过 onCheckboxChange 事件返回一个数组。


三、自定义单选和多选

如果你不想使用 radio 或 checkbox 组件,可以通过自定义逻辑实现单选和多选功能。

1. WXML 代码

<view class="container"><view wx:for="{{items}}" wx:key="id" class="item {{item.checked ? 'active' : ''}}" bindtap="onItemTap" data-index="{{index}}">{{item.name}}</view>
</view>

2. JS 代码

javascript

Page({data: {items: [{ id: 1, name: '选项A', value: 'A', checked: false },{ id: 2, name: '选项B', value: 'B', checked: false },{ id: 3, name: '选项C', value: 'C', checked: false }],isMultiple: false // 是否多选},// 点击选项事件onItemTap(e) {const index = e.currentTarget.dataset.index; // 获取点击的索引const items = this.data.items;if (this.data.isMultiple) {// 多选逻辑items[index].checked = !items[index].checked;} else {// 单选逻辑items.forEach((item, i) => {item.checked = i === index;});}this.setData({ items });console.log('当前选中的值:', items.filter(item => item.checked).map(item => item.value));}
});

3. WXSS 代码

.container {padding: 20px;
}.item {padding: 10px;margin-bottom: 10px;border: 1px solid #ccc;text-align: center;
}.active {background-color: #07c160;color: white;
}

4. 实现效果

单选

多选

  • 点击选项时,根据 isMultiple 的值决定是单选还是多选。

  • 选中的选项会高亮显示。


四、总结

功能使用组件特点
单选radio + radio-group只能选择一个选项
多选checkbox + checkbox-group可以选择多个选项
自定义选择无组件,通过逻辑实现更灵活,可以自定义样式和交互逻辑

相关文章:

微信小程序:实现单选,多选,通过变量控制单选/多选

一、实现单选功能 微信小程序提供了 radio 组件来实现单选功能。radio 组件需要配合 radio-group 使用。 1. WXML 代码 <radio-group bindchange"onRadioChange"><label wx:for"{{items}}" wx:key"id"><radio value"{{it…...

MOS怎样选型,步骤详解

一&#xff1a;选用N沟道还是P沟道   为设计选择正确器件的第一步是决定采用N沟道还是P沟道MOSFET。在典型的功率应用中&#xff0c;当一个MOSFET接地&#xff0c;而负载连接到干线电压上时&#xff0c;该MOSFET就构成了低压侧开关。在低压侧开关中&#xff0c;应采用N沟道M…...

CMake技术细节:解决未定义,提供参数

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

1688 满足跨境业务需求而提供的一组 API 接口

1688 跨境属性接口系列是 1688 开放平台为满足跨境业务需求而提供的一组 API 接口&#xff0c;其中最主要的是1688.item_get : 一&#xff1a;1688.item_get接口 接口功能&#xff1a;主要用于查询 1688 商品的跨境属性&#xff0c;为开发者和商家提供了获取商品跨境关键信息…...

物联网网关Web服务器--CGI开发实例BMI计算

本例子通一个计算体重指数的程序来演示Web服务器CGI开发。 硬件环境&#xff1a;飞腾派开发板&#xff08;国产E2000处理器&#xff09; 软件环境&#xff1a;飞腾派OS&#xff08;Phytium Pi OS&#xff09; 硬件平台参考另一篇博客&#xff1a;国产化ARM平台-飞腾派开发板…...

计算机网络 (51)鉴别

前言 计算机网络鉴别是信息安全领域中的一项关键技术&#xff0c;主要用于验证用户或信息的真实性&#xff0c;以及确保信息的完整性和来源的可靠性。 一、目的与重要性 鉴别的目的是验明用户或信息的正身&#xff0c;对实体声称的身份进行唯一识别&#xff0c;以便验证其访问请…...

【Docker】搭建一个功能强大的自托管虚拟浏览器 - n.eko

前言 本教程基于群晖的NAS设备DS423的docker功能进行搭建&#xff0c;DSM版本为 DSM 7.2.2-72806 Update 2。 n.eko 支持多种类型浏览器在其虚拟环境中运行&#xff0c;本次教程使用 Chromium​ 浏览器镜像进行演示&#xff0c;支持访问内网设备和公网地址。 简介 n.eko 是…...

论文笔记(六十二)Diffusion Reward Learning Rewards via Conditional Video Diffusion

Diffusion Reward Learning Rewards via Conditional Video Diffusion 文章概括摘要1 引言2 相关工作3 前言4 方法4.1 基于扩散模型的专家视频建模4.2 条件熵作为奖励4.3 训练细节 5 实验5.1 实验设置5.2 主要结果5.3 零样本奖励泛化5.4 真实机器人评估5.5 消融研究 6 结论 文章…...

探索 Stable-Diffusion-Webui-Forge:更快的AI图像生成体验

目录 简介&#x1f31f; 主要特点&#x1f4e5; 安装步骤1. 下载2. 配置环境和安装依赖3. 模型目录说明 &#x1f680; 运行 Stable-Diffusion-Webui-Forge1. 进入项目目录2. 运行项目3. 打开页面 &#x1f3a8; 使用体验常见问题&#x1f4dd; 小结 简介 Stable-Diffusion-We…...

Redis使用基础

1 redis介绍 Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务 ! 是完全开源的&#xff0c;遵守 BSD 协议&#xff0c;是一个高性能的 key-value 数据库。 使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并…...

PyCharm+RobotFramework框架实现UDS自动化测试- (四)项目实战0x10

1.环境搭建 硬件环境&#xff1a;CANoe、待测设备&#xff08;包含UDS诊断模块&#xff09; 2.pythonPyCharm环境 pip install robotframework pip install robotframework-ride pip install openpyxl pip install udsoncan pip install python-can pip install can-isotp3…...

【TCP】rfc文档

tcp协议相关rfc有哪些 TCP&#xff08;传输控制协议&#xff09;是一个复杂的协议&#xff0c;其设计和实现涉及多个RFC文档。以下是一些与TCP协议密切相关的RFC文档列表&#xff0c;按照时间顺序排列&#xff0c;涵盖了从基础定义到高级特性和优化的各个方面&#xff1a; 基…...

【SpringCloud】黑马微服务学习笔记

目录 1. 关于微服务 ?1.1 微服务与单体架构的区别 ?1.2 SpringCloud 技术 2. 学习前准备 ?2.1 环境搭建 ?2.2 熟悉项目 3. 正式拆分 ?3.1 拆分商品功能模块 ?3.2 拆分购物车功能模块 4. 服务调用 ?4.1 介绍 ?4.2 RustTemplate?的使用 4.3 服务治理-注册中…...

梯度提升决策树树(GBDT)公式推导

### 逻辑回归的损失函数 逻辑回归模型用于分类问题&#xff0c;其输出是一个概率值。对于二分类问题&#xff0c;逻辑回归模型的输出可以表示为&#xff1a; \[ P(y 1 | x) \frac{1}{1 e^{-F(x)}} \] 其中 \( F(x) \) 是一个线性组合函数&#xff0c;通常表示为&#xff…...

【MySQL】表的基本操作

??表的基本操作 文章目录&#xff1a; 表的基本操作 创建查看表 创建表 查看表结构 表的修改 表的重命名 表的添加与修改 删除表结构 总结 前言&#xff1a; 在数据库中&#xff0c;数据表是存储和组织数据的基本单位&#xff0c;对于数据表的操作是每个程序员需要烂熟…...

项目中使用的是 FastJSON(com.alibaba:fastjson)JSON库

从你的 pom.xml 文件中可以看到&#xff0c;项目明确依赖了以下 JSON 库&#xff1a; FastJSON&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version> </depende…...

Flutter中PlatformView在鸿蒙中的使用

Flutter中PlatformView在鸿蒙中的使用 概述在Flutter中的处理鸿蒙端创建内嵌的鸿蒙视图创建PlatformView创建PlatformViewFactory创建plugin&#xff0c;注册platformview注册插件 概述 集成平台视图&#xff08;后称为平台视图&#xff09;允许将原生视图嵌入到 Flutter 应用…...

音频入门(一):音频基础知识与分类的基本流程

音频信号和图像信号在做分类时的基本流程类似&#xff0c;区别就在于预处理部分存在不同&#xff1b;本文简单介绍了下音频处理的方法&#xff0c;以及利用深度学习模型分类的基本流程。 目录 一、音频信号简介 1. 什么是音频信号 2. 音频信号长什么样 二、音频的深度学习分…...

规避路由冲突

路由冲突是指在网络中存在两个或多个路由器在进行路由选择时出现矛盾&#xff0c;导致网络数据包无法正确传输&#xff0c;影响网络的正常运行。为了规避路由冲突&#xff0c;可以采取以下措施&#xff1a; 一、合理规划IP地址 分配唯一IP&#xff1a;确保每个设备在网络中都有…...

SQLmap 自动注入 -02

1: 如果想获得SQL 数据库的信息&#xff0c;可以加入参数: -dbs sqlmap -u "http://192.168.56.133/mutillidae/index.php?pageuser-info.php&usernamexiaosheng&passwordabc&user-info-php-submit-buttonViewAccountDetails" --batch -p username -dbs…...

Amadeus的知识库 | 纯向量检索关键词识别弱?带上BM25算法搞混合检索 + Reranking做召回优化,RAG生成质量大幅增强!

一、引文在之前我们的检索环节只是使用了向量数据库提供的 ANN 算法进行纯向量检索&#xff0c;原因在于它可以通过计算查询向量和文档向量之间的余弦相似度&#xff0c;在极短时间内从整个向量数据库找到几个语义相似的局部最优解。它的强大之处在于擅长理解语义&#xff0c;但…...

BigDL-2.x Chronos时间序列分析:AutoML驱动的预测模型构建

BigDL-2.x Chronos时间序列分析&#xff1a;AutoML驱动的预测模型构建 【免费下载链接】BigDL-2.x BigDL: Distributed TensorFlow, Keras and PyTorch on Apache Spark/Flink & Ray 项目地址: https://gitcode.com/gh_mirrors/bi/BigDL-2.x BigDL-2.x是一个分布式深…...

塞尔达存档定制工具:解锁海拉鲁冒险的无限可能

塞尔达存档定制工具&#xff1a;解锁海拉鲁冒险的无限可能 【免费下载链接】BOTW-Save-Editor-GUI A Work in Progress Save Editor for BOTW 项目地址: https://gitcode.com/gh_mirrors/bo/BOTW-Save-Editor-GUI 在海拉鲁大陆的冒险旅程中&#xff0c;每个玩家都曾面临…...

动态分区算法实战:首次适应与最佳适应的内存管理对比

1. 动态分区算法入门&#xff1a;内存管理的两大核心策略 想象你是一个仓库管理员&#xff0c;面对一堆大小不一的货物和不断变化的存取需求&#xff0c;如何高效利用有限空间&#xff1f;这就是操作系统内存管理要解决的核心问题。动态分区算法中的**首次适应&#xff08;Firs…...

小米扫地机器人固件系统架构与功能解析

平台采用某米1代扫地机。 stm32f103真实项目程序。 c原程序 keil工程。 目前只有32端代码能实现延边避障防跌落充电等功能。适合需要学习项目与代码规范的工程师 硬件驱动包含 陀螺仪姿态传感器bmi160、电源管理bq24733等。 软件驱动包括 IIC、PWM、SPI、多路ADC与DMA、编码器输…...

STEP3-VL-10B私有化部署指南:Apache 2.0许可下的完整教程

STEP3-VL-10B私有化部署指南&#xff1a;Apache 2.0许可下的完整教程 1. 认识STEP3-VL-10B&#xff1a;轻量级多模态模型 STEP3-VL-10B是阶跃星辰开源的一款10B参数量的多模态视觉语言模型。虽然参数规模不算庞大&#xff0c;但在多个专业评测中表现优异&#xff0c;甚至能与…...

ZoteroDuplicatesMerger:文献库智能去重解决方案的技术深度解析

ZoteroDuplicatesMerger&#xff1a;文献库智能去重解决方案的技术深度解析 【免费下载链接】ZoteroDuplicatesMerger A zotero plugin to automatically merge duplicate items 项目地址: https://gitcode.com/gh_mirrors/zo/ZoteroDuplicatesMerger 文献管理工具Zoter…...

告别死记硬背:用GitHub笔记和实战思维重新理解电路与电子学

告别死记硬背&#xff1a;用GitHub笔记和实战思维重新理解电路与电子学 电路与电子学这门课&#xff0c;常常让计算机专业的学生又爱又恨。爱的是它揭示了计算机硬件底层的奥秘&#xff0c;恨的是那些繁琐的公式和抽象的概念。但问题真的出在课程本身吗&#xff1f;或许我们需…...

保姆级教程:在RK3588开发板上跑通librga图形加速demo(含预编译库避坑指南)

在RK3588开发板上快速验证librga图形加速功能的实战指南 对于刚接触RK3588开发板的嵌入式开发者来说&#xff0c;图形加速功能的验证往往是一个令人头疼的环节。Rockchip提供的librga库虽然功能强大&#xff0c;但官方GitHub仓库的编译步骤复杂&#xff0c;依赖众多&#xff0…...

LAN Chat Room:如何在没有互联网的环境中实现高效局域网通讯?

LAN Chat Room&#xff1a;如何在没有互联网的环境中实现高效局域网通讯&#xff1f; 【免费下载链接】LAN-Chat-Room &#x1f609;基于QT开发的局域网聊天室 项目地址: https://gitcode.com/gh_mirrors/la/LAN-Chat-Room 在当今高度依赖互联网的通讯环境中&#xff0c…...