uniapp 卡片勾选
前言
公司的app项目使用的uniapp,项目里有一个可勾选的卡片功能,效果图如下:
找了一圈没找到什么太好的组件,于是就自己简单写了一个,记录一下。避免以后还会用到
代码
<template><view class="card-selection"><checkbox-group ="checkboxChange"><view v-for="(item, index) in checkboxList" :key="index"><!-- 顶部标题部分 --><slot name="header" :row="item" :rowIndex="index"></slot><label><view v-if="item.checkboxShow" class="card-selection-item" :style="itemStyle"><!-- 左侧复选框 --><view class="item1"><checkbox :value="item[rowKey]" :disabled="item.checkboxDisabled":checked="item.checkboxChecked" /></view><!-- 右侧自定义插槽内容 --><view class="item2"><slot name="default" :row="item"></slot></view></view></label></view></checkbox-group></view>
</template><script>export default {props: {// 唯一值rowKey: {type: String,default: 'id'},// 样式itemStyle: {type: String,default: ''}},data() {return {// 列表checkboxList: [],// 记录已经勾选了的数据hasCheckedList: []}},methods: {// 初始化init(list) {this.checkboxList = []// 添加选中、禁用、是否显示等属性list.forEach(item => {item.checkboxChecked = falseitem.checkboxDisabled = falseitem.checkboxShow = truethis.checkboxList.push(item)})},// 复选框勾选checkboxChange(e) {this.hasCheckedList = e?.detail?.value || []//console.log("复选框勾选数据:", this.hasCheckedList)// 返回给父组件勾选的值const checkedList = this.checkboxList.filter(item => this.hasCheckedList.includes(item[this.rowKey]))// 修改被勾选的数据的checkboxCheckedthis.checkboxList.forEach(item => {item.checkboxChecked = this.hasCheckedList.includes(item[this.rowKey])})//console.log("数据列表:",this.checkboxList)this.$emit('checkboxChange', {checkedValueList: this.hasCheckedList,checkedList: checkedList})console.log("复选框勾选数据:", {checkedValueList: this.hasCheckedList,checkedList: checkedList})},// 复选框禁用逻辑checkboxDisabled(callback) {this.checkboxList.forEach(item => {item.checkboxDisabled = Boolean(callback(item))})},// 复选框勾选逻辑checkboxCheckd(callback) {this.checkboxList.forEach(item => {//console.log("复选框勾选:", item, callback(item))item.checkboxChecked = Boolean(callback(item))})// 自动勾选不会触发checkboxChange事件,这里需要手动更新let valueList = this.checkboxList.filter(item => item.checkboxChecked).map(item => item[this.rowKey])this.checkboxChange({detail:{value:valueList}})this.$forceUpdate()},// 清空勾选clearChecked() {this.checkboxList.forEach(item => {item.checkboxChecked = false})// 自动勾选不会触发checkboxChange事件,这里需要手动更新let valueList = this.checkboxList.filter(item => item.checkboxChecked).map(item => item[this.rowKey])this.checkboxChange({detail:{value:valueList}})},// 清空禁用clearDisabled() {this.checkboxList.forEach(item => {item.checkboxDisabled = false})},// 控制数据的显示和隐藏,用于可能出现数据筛选的情况showCheckboxData(callback) {this.checkboxList.forEach(item => {item.checkboxShow = Boolean(callback(item))})}},}
</script><style lang="scss" scoped>.card-selection-item {padding: 10px;display: flex;.item1 {width: 30px;height: 30px;flex-shrink: 0;}.item2 {flex-shrink: 1;width: 100%;}}
</style>
没啥复杂的代码,看一下代码就能知道如何使用。效果图如下:
相关文章:

uniapp 卡片勾选
前言 公司的app项目使用的uniapp,项目里有一个可勾选的卡片功能,效果图如下: 找了一圈没找到什么太好的组件,于是就自己简单写了一个,记录一下。避免以后还会用到 代码 <template><view class"card-…...

乐趣Python——文件与数据:挥别乱糟糟的桌面
各位朋友们,今天我们要开启一场非凡的冒险——进入文件操作的世界!你知道吗,在你的电脑里,有一个叫做“文件系统”的迷宫,里面藏着各种各样的文件和文件夹,它们就像是迷宫中的宝藏。但有时候,这…...
docker nginx-lua发送post json 请求
环境准备 dockerfile from fabiocicerchia/nginx-lua:1.25.3-ubuntu22.04 run apt-get -qq update && apt-get -qq install luarocks run luarocks install lua-cjson run luarocks install lua-iconv run luarocks install lua-resty-http后台代理服务准备ÿ…...

阿里面试总结 一
写了这些还是不够完整,阿里 字节 卷进去加班!奥利给 ThreadLocal 线程变量存放在当前线程变量中,线程上下文中,set将变量添加到threadLocals变量中 Thread类中定义了两个ThreadLocalMap类型变量threadLocals、inheritableThrea…...
多线程(49)定义无锁、阻塞、非阻塞和无等待算法
在并发编程中,理解不同的同步策略——无锁(Lock-Free)、阻塞(Blocking)、非阻塞(Non-Blocking)、无等待(Wait-Free)——对于设计高效、健壮的多线程应用至关重要。让我们…...
(一)ffmpeg 入门基础知识
一、ffmpeg FFmpeg是一套强大的开源音视频处理工具,能够录制、转换以及流化音视频内容。 FFmpeg是开源的,这意味着它的源代码是公开的,允许任何人使用、修改和分发。它提供了录制、转换以及流化音视频的完整解决方案,支持多种格…...

【软件测试】个人博客系统测试
个人博客系统测试 一、项目背景1.1 技术背景1.2 功能背景 二、 测试用例编写三、自动化测试3.1 什么是自动化测试3.2 通过使用selenium进行自动化测试的编写(Java实现)3.3 编写测试用例,执行自动化测试3.3.1 输入用户名:test,密码:123&#x…...

20240410解决OK3588-C的核心板刷机之后无法启动的问题
20240410解决OK3588-C的核心板刷机之后无法启动的问题 2024/4/10 19:38 1、编译OK3588的LINUX/Buildroot?forlinxubuntu: ~/3588/OK3588_Linux_fs$ sudo ./build.sh BoardConfig-linuxfs-ok3588.mk 2、进行全编译 forlinxubuntu: ~/3588/OK3588_Linux_fs$ sudo ./bu…...

仅需三步就能成为大语言模型Prompt Engineer提示词工程大神
AI Prompt Engineer(提示词工程)是当下GenAI行业最热门的话题,它是利用有效的AI模型交互提示技术,引导大语言模型生成更高质量、更准确、更相关的回应。相对于预训练和微调,提示词工程不需要标注数据和训练模型,极大的节约了时间和…...

RuleEngine规则引擎底层改造AviatorScript 之公式规则
前情提要,看上一个文章,具体要实现的效果就是 当然上来的问题就是前端的问题,这个框首先他们用的是富文本,富文本传到后台的结果是前端脚本,带着h5的标签,后面改成了这个,当时这个东西其实和后…...
Vue项目(H5)与微信小程序来回跳转
新建H5页面 在小程序里面新建一个名为H5的文件夹,以及H5页面 H5.WXML <web-view src"{{h5Url}}" bindmessage"handleGetMessage"></web-view>H5.JSdata: { h5Url:https://xxx.com/login 要跳转的H5页面},H5回来的回调方法handleG…...
设计模式-单一职责原则
基本介绍 对类来说的,即一个类应该只负责一项职责。如类A负责两个不同的职责,职责1,职责2.当职责1需求变更而改变A时,可能造成职责2执行错误,所以需要将类A的粒度分解为A1,A2 应用实例 方案1 public cl…...
vue和nunjucks的变量插值的形式{{}}冲突
Nunjucks 中修改配置 const nunjucks require(nunjucks);const template_old nunjucks.renderString(template_old: Hello, {{name}}!, { name: World }); console.log(template_old); // 配置 Nunjucks 环境 nunjucks.configure({tags: {variableStart: $(, // 设置变量起始…...

多语言婚恋交友APP开发流程一览
近年来,随着全球化的发展和人们对跨文化交流的需求增加,多语言婚恋交友APP的需求逐渐增长。开发这类APP需要考虑到不同语言和文化下用户的需求,涉及到一系列独特的流程和挑战。本文将从专家角度为您解析多语言婚恋交友APP的开发流程ÿ…...

RUM 最佳实践-交互延迟的探索与发现
FID 在互联网高速发展的时代,用户体验已成为企业竞争的关键所在。网页性能作为用户体验的重要组成部分,直接影响着用户的满意度和工作效率。First Input Delay(FID)作为衡量网页性能的重要指标,越来越受到业界关注。今…...

spring boot 集成 flyway依赖 做数据库迁移,让部署没烦恼
flyway 是一个敏捷工具,用于数据库的移植。采用 Java 开发,支持所有兼容 JDBC 的数据库。 主要用于在你的应用版本不断升级的同时,升级你的数据库结构和里面的数据。 还是直接上代码 第一步: <!-- Flyway 数据库迁移 依赖 他…...
TCP协议--传输机制
TCP协议原理 TCP协议是对数据传输提供的一个管控机制,主要体现在可靠和效率两个方面,即在保证数据可靠传输的情况下尽可能的提高效率 可靠传输机制 确认应答机制 向对方发送一个数据报,对方要返回一个确认应答的数据报 实现的方式&#x…...

句柄ros::NodeHandle nh(“~“)与nh对launch文件参数配置(param)的影响
ros::NodeHandle nh("~"); 改为: ros::NodeHandle nh; 即可 /*************************分割线 ************************/ 如果原本是: ros::NodeHandle nh;可以改成: ros::NodeHandle nh("~"); 试试...
C++_List的学习
1.概述 1. list 是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代 2. list 的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素 3. list…...

centos 7.9 nginx本地化安装,把镜像改成阿里云
1.把centos7.9系统切换到阿里云的镜像源 1.1.先备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup1.2.下载新的CentOS-Base.repo配置文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo特别…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
微服务通信安全:深入解析mTLS的原理与实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...

智警杯备赛--excel模块
数据透视与图表制作 创建步骤 创建 1.在Excel的插入或者数据标签页下找到数据透视表的按钮 2.将数据放进“请选择单元格区域“中,点击确定 这是最终结果,但是由于环境启不了,这里用的是自己的excel,真实的环境中的excel根据实训…...