基于Vue和uni-app的增强型多选框Checkbox组件开发

基于Vue和uni-app的增强型多选框(Checkbox)组件开发

摘要

随着前端技术的不断发展和用户体验要求的提升,传统的Checkbox组件已不能满足所有需求。本文介绍了一种基于Vue和uni-app的增强型多选框(Checkbox)组件的开发过程。该组件不仅提供了基本的复选功能,还通过数据驱动、支持页面正反向传值等特性,进一步增强了组件的灵活性和可重用性。

图片

一、引言

Checkbox组件在前端开发中扮演着重要角色,它允许用户选择多个选项,是表单交互中不可或缺的元素。然而,传统的Checkbox组件往往功能单一,无法满足复杂多变的前端需求。因此,开发一种增强型的Checkbox组件成为了必要。

二、组件需求分析与设计

  1. 数据驱动:组件应该能够通过数据驱动,即组件的状态和行为应该由数据决定,而不是通过直接操作DOM元素来实现。

  2. 多选功能:组件应该支持多选操作,允许用户选择多个选项。

  3. 页面正反向传值:组件应该能够支持页面正反向传值,即能够将组件的状态传递给父组件,同时也能够接收父组件传递的数据。

  4. 易于扩展和定制:组件应该具有良好的扩展性和可定制性,方便开发者根据具体需求进行二次开发。

   效果图如下:

图片

图片

图片

图片

三、示例代码

 
使用方法
<!-- 多选组件  checkData:多选数据  @change:多选事件  -->
<cc-checkView :checkData="items" @change="checkboxChange"></cc-checkView>

HTML代码实现部分

<template>
    <view>
        <!-- 多选组件  checkData:多选数据  @change:多选事件  -->
        <cc-checkView :checkData="items" @change="checkboxChange"></cc-checkView>

        <button class="botBtn" type="primary" @click="submitBtnClick">完成</button>

    </view>
</template>

<script>
    export default {

        data() {

            return {
                selArr: [],
                items: [{
                        value: '无配置',
                        name: '无配置',
                        checked: false

                    },
                    {
                        value: '空调',
                        name: '空调',
                        checked: false

                    },
                    {
                        value: '沙发',
                        name: '沙发',
                        checked: false
                    },
                    {
                        value: '衣柜',
                        name: '衣柜',
                        checked: false

                    },
                    {
                        value: '宽带',
                        name: '宽带',
                        checked: false

                    },
                    {
                        value: '电视',
                        name: '电视',
                        checked: false

                    },
                    {
                        value: '冰箱',
                        name: '冰箱',
                        checked: false

                    },
                    {
                        value: '床',
                        name: '床',
                        checked: false

                    },
                    {
                        value: '洗衣机',
                        name: '洗衣机',
                        checked: false

                    }

                ]
            };
        },
        onLoad(e) {

            // 获取正向传值
            if (typeof(e.obj) === 'string') {

                let selArr = e.obj.split(',');

                // 设置已经勾选的数据
                for (let item of this.items) {

                    if (selArr.includes(item.name)) {
                        this.$set(item, 'checked', true);
                    } else {
                        this.$set(item, 'checked', false);
                    }
                }

            }
            console.log("正向传值" + e.obj);
        },
        methods: {
            // 多选事件
            checkboxChange: function(e) {

                this.selArr = e.detail.value;
                console.log(this.selArr);
            },
            submitBtnClick: function(e) {

                console.log(this.selArr);
                this.$eventHub.$emit('fire', this.selArr);

                uni.navigateBack({
                    animationDuration: 20
                });
            }
        }
    };
</script>

<style>
    .uni-list-cell {
        justify-content: flex-start;
        width: 100%;
        background-color: #8a6de9;
    }

    .mycheckBox {
        margin-left: 24px;
        margin-right: 10px;
        margin-top: 50rpx;
    }

    .botBtn {
        margin-top: 36px;
        width: 89%;
    }
</style>

四、组件应用

在父组件中引入并使用增强型多选框组件,通过v-model指令实现双向数据绑定,并通过监听@change事件处理多选事件。

 

五、总结与展望

本文介绍了基于Vue和uni-app的增强型多选框组件的开发过程。该组件通过数据驱动、支持页面正反向传值等特性,提高了组件的灵活性和可重用性。未来,我们可以继续探索组件的更多可能性和应用场景,如支持条件筛选、异步加载数据等,以满足更复杂的前端需求。同时,也可以考虑将该组件开源,为更多的开发者提供便利。

项目下载地址:

https://ext.dcloud.net.cn/plugin?id=12979

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/631304.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 安装 eclipse 的详细过程及工程创建和编译配置

目录 一、安装环境二、下载依赖 java jdk三、下载 eclipse四、安装4.1 java 环境4.2 eclipse 安装4.3 打开 eclipse 五、配置 eclipse5.1 新建 C 工程5.2 工具链 配置5.3 头文件路径5.4 链接库5.5 编译 一、安装环境 Ubuntu 版本&#xff1a;22.04.3 位数&#xff1a;64-bit 二…

期权(1):基本概念,权利金=定金,买方,卖方,零和游戏,对赌协议

期权是合约&#xff0c;权利金就是定金&#xff01; 合约到期时 买方可以选择行权&#xff0c;也可以选择不行权。代价就是定金损失。因此亏损封顶&#xff0c;但盈利无限。卖方赚的就是买方的定金&#xff0c;盈利封顶&#xff0c;但亏损无限。 从这里&#xff0c;我们看出…

C++ | Leetcode C++题解之第89题格雷编码

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> grayCode(int n) {vector<int> ret(1 << n);for (int i 0; i < ret.size(); i) {ret[i] (i >> 1) ^ i;}return ret;} };

GPT4o“全能”模型发布;2人AI团队被收购;3款AI搜索引擎

1. OpenAI发布GPT4o&#xff0c;能实时语音视频交互 今天&#xff0c;OpenAI发布了最新的旗舰版模型GPT4o&#xff08;“o”代表全能&#xff09;。这是一个跨音频、视觉和文本的端到端的新模型&#xff0c;可以在平均320ms内对人类的语音输入进行响应&#xff0c;而此前ChatGP…

Golang | Leetcode Golang题解之第91题解码方法

题目&#xff1a; 题解&#xff1a; func numDecodings(s string) int {n : len(s)// a f[i-2], b f[i-1], c f[i]a, b, c : 0, 1, 0for i : 1; i < n; i {c 0if s[i-1] ! 0 {c b}if i > 1 && s[i-2] ! 0 && ((s[i-2]-0)*10(s[i-1]-0) < 26) {c…

数据结构——冒泡排序

懒猫老师-数据结构-(63)冒泡排序(起泡排序)_哔哩哔哩_bilibili 交换排序的一类 基本思想 两两比较相邻记录的关键码&#xff0c;如果反序则交换&#xff0c;直到没有反序的记录为止。 过程 有序区不断扩大&#xff0c;无序区不断减小

基于 Spring Boot 博客系统开发(十)

基于 Spring Boot 博客系统开发&#xff08;十&#xff09; 本系统是简易的个人博客系统开发&#xff0c;为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。&#x1f33f;&#x1f33f;&#x1f33f; 基于 Spring Boot 博客系统开发&#xff08;九&#xff09;&#x1f…

小红书笔记怎么发浏览量高?

小红书笔记发布是有技巧和策略的&#xff0c;为什么有的小红书笔记浏览量那么高&#xff0c;是因为下足了功夫&#xff0c;小红书笔记怎么发浏览量高&#xff1f;今天伯乐网络传媒就来给大家揭秘一下。 一、选题与定位 1. 热门话题选择 要想提高小红书笔记的浏览量&#xff0…

Python | Leetcode Python题解之第91题解码方法

题目&#xff1a; 题解&#xff1a; class Solution:def numDecodings(self, s: str) -> int:n len(s)# a f[i-2], b f[i-1], c f[i]a, b, c 0, 1, 0for i in range(1, n 1):c 0if s[i - 1] ! 0:c bif i > 1 and s[i - 2] ! 0 and int(s[i-2:i]) < 26:c aa,…

【Leetcode每日一题】 综合练习 - 括号生成(难度⭐⭐)(76)

1. 题目解析 题目链接&#xff1a;22. 括号生成 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 问题描述 我们需要找出所有可能的、有效的括号序列。一个有效的括号序列指的是一个仅由(和)组成的字符串&#xff0c;…

异步编程CompletableFuture总结

文章目录 1. 简介&#xff1a;2. 比较1、传统方式2、使用CompletableFuture&#xff1a;异步执行返回值 3、组合处理&#xff1a;anyOfallof : 4. 异步回调&#xff1a;thenAcceptthenApplywhenComplete等同于 thenAccepthandel()等同于thenApply 5. 常用方法&#xff1a;1、su…

深度优先搜索汇总

常用英文 最近公共祖先&#xff08;Lowest Common Ancestor&#xff0c;简称LCA&#xff09; posterity&#xff0c;英语单词&#xff0c;主要用作名词&#xff0c;作名词时译为“子孙&#xff0c;后裔&#xff1b;后代”。 什么是深度优先搜索 深度优先搜索&#xff0c;D…

【简单介绍下在Ubuntu中如何设置中文输入法】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

二.使用PgAdmin连接Postgresql

二.使用PgAdmin连接Postgresql PostgreSQL是一种开源的对象关系型数据库管理系统(ORDBMS),它支持大部分SQL标准并提供了许多高级功能,例如事务、外键、视图、触发器等。PostgreSQL由PostgreSQL全球开发组维护和开发,它是一种高度可扩展的数据库系统,可以在各种操作系统…

echarts 时间线

echarts 时间线 &#xff08;下面附有完整示例&#xff09; 实现思路 1、先分析图片是由一根y轴线和每个小节点组成&#xff1b; 2、可以看出时间线是没有轴的&#xff0c;所以将“ xAxis ”属性隐藏&#xff1b; 3、y轴是没有分割线的所以隐层“ yAxis ”中的“ splitLine ”…

AI网络爬虫:用kimi提取网页中的表格内容

一个网页中有一个很长的表格&#xff0c;要提取其全部内容&#xff0c;还有表格中的所有URL网址。 在kimi中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个编写爬取网页表格内容的Python脚步的任务&#xff0c;具体步骤如下&#xff1a; 在F盘新建一个…

控制状态流程图中的消息活动

消息是一个Stateflow对象&#xff0c;用于在本地或图表之间进行数据通信。从发件人图表中&#xff0c;您可以发送或转发邮件。在接收图表中&#xff0c;队列接收消息并将其保存&#xff0c;直到图表能够对其进行评估。 使用Stateflow运算符&#xff0c;您可以访问消息数据&…

[PythonWeb:Django框架]:项目初始化搭建

文章目录 pip查看安装列表安装制定Django版本初始化django项目执行 python manage.py startapp projectName 生成app应用执行 python manage.py runserver 运行web项目settings.py注入应用配置django项目页面访问地址注意&#xff1a;再次访问地址&#xff0c;返回制定页面 pip…

【ubuntu】ubuntu-18.04开机卡在Starting User Manager for UID 120....问题解决方案

错误截图 解决方案 启动系统&#xff0c;开机界面单击按键esc键&#xff0c;注意需要将鼠标定位到菜单界面&#xff0c;移动键盘上下键选择Advanced options for Ubuntu 进入如下菜单&#xff0c;选择recovery mode 回车之后会弹出如下界面&#xff0c;选择如下root&#xff0…

爬虫界的“闪电侠”:异步爬虫与分布式系统的实战秘籍

Hi&#xff0c;我是阿佑&#xff0c;前文给大家讲了&#xff0c;如何做一个合法“采蜜”的蜜蜂&#xff0c;有了这么个自保的能力后&#xff0c;阿佑今天就将和大家踏入 —— 异步爬虫 的大门&#xff01; 异步爬虫大法 1. 引言1.1 爬虫框架的价值&#xff1a;效率与复杂度管理…