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

news/2025/1/20 3:16:37/

一、实现单选功能

小程序>微信小程序提供了 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可以选择多个选项
自定义选择无组件,通过逻辑实现更灵活,可以自定义样式和交互逻辑

http://www.ppmy.cn/news/1564565.html

相关文章

昇腾环境ppstreuct部署问题记录

测试代码 我是在华为昇腾910B3上测试的PPStructure。 import os import cv2 from PIL import Image #from paddleocr import PPStructure,draw_structure_result,save_structure_res from paddleocr_asyncio import PPStructuretable_engine PPStructure(show_logTrue, imag…

[Easy] leetcode-14 最长公共前缀

一、题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 输入&#xff1a;strs ["flower","flow","flight"] 输出&#xff1a;"fl"输入&#xff1a;strs [&qu…

springCloudGateway+nacos自定义负载均衡-通过IP隔离开发环境

先说一下想法&#xff0c;小公司开发项目&#xff0c;参考若依框架使用的spring-cloud-starter-gateway和spring-cloud-starter-alibaba-nacos, 用到了nacos的配置中心和注册中心&#xff0c;有多个模块&#xff08;每个模块都是一个服务&#xff09;。 想本地开发&#xff0c;…

Asp .Net Core 实现微服务:集成 Ocelot+Nacos+Swagger+Cors实现网关、服务注册、服务发现

什么是 Ocelot ? Ocelot是一个开源的ASP.NET Core微服务网关&#xff0c;它提供了API网关所需的所有功能&#xff0c;如路由、认证、限流、监控等。 Ocelot是一个简单、灵活且功能强大的API网关&#xff0c;它可以与现有的服务集成&#xff0c;并帮助您保护、监控和扩展您的…

Gradio Tunneling 支持固定域名啦

这里是视频 实用的内网穿透小工具更新了&#xff0c;这次可以给个固定域名了 的笔记。 项目地址&#xff1a;https://github.com/arkohut/gradio-tunneling 之前我介绍过一个小工具 gradio-tunneling&#xff0c;它可以让非 gradio 创建的服务也使用 gradio 的 --share 功能。…

消息队列实战指南:三大MQ 与 Kafka 适用场景全解析

前言&#xff1a;在当今数字化时代&#xff0c;分布式系统和大数据处理变得愈发普遍&#xff0c;消息队列作为其中的关键组件&#xff0c;承担着系统解耦、异步通信、流量削峰等重要职责。ActiveMQ、RabbitMQ、RocketMQ 和 Kafka 作为市场上极具代表性的消息队列产品&#xff0…

使用 Java 开发 Android 应用:Kotlin 与 Java 的混合编程

使用 Java 开发 Android 应用&#xff1a;Kotlin 与 Java 的混合编程 在开发 Android 应用程序时&#xff0c;我们通常可以选择使用 Java 或 Kotlin 作为主要的编程语言。然而&#xff0c;有些开发者可能会想要在同一个项目中同时使用这两种语言&#xff0c;这就是所谓的混合编…

论文略读:ASurvey of Large Language Models for Graphs

2024 KDD 归纳了四种主要的graph大模型 GNNs as PrefixLLMs as PrefixLLMs-Graphs IntegrationLLMs-Only 1 GNNs as Prefix 1.1 节点级 Token 化 将图结构中的每个节点单独输入到 LLM 中使 LLM 能够深入理解细粒度的节点级结构信息&#xff0c;并准确辨别不同节点间的关联与…