vue3 antd项目实战 表格的增删改查(一)input输入框根据关键字模糊搜索【纯前端filter过滤】

news2024/11/28 4:39:48

input输入框——关键字模糊搜索

  • 引言铺垫
  • 场景复现
  • 解决方案
      • 筛选的实现
      • 重置筛选信息
      • 优化处理(监听的实现)

功能实现可能要用到的知识:
vue3数据变化侦测&&信息筛选过滤.filter() .map() .forEach(). find()🔥
vue3【watch检测/监听】watch检测数据变化&&监听使用🔥🔥
vue3+ant design vue+ts实战【ant-design-vue组件库引入】🔥
vue3 antd 项目实战——table表格(一文教你实现最简单的table表格)🔥🔥

引言铺垫

  • 从后端数据库中获取到数据后,需要将其存放在后台的页面中,通常以表格的形式存在增删改查是每一个后台管理系统对于数据操作必不可少的部分
  • 因此 增删改查 将作为一个小专栏出现在我的主页,后续会持续更新~~
  • 表格查找有两种方法,一种是纯前端实现,另一种是调用接口前后端联动实现
  • 本期文章重点介绍纯前端过滤的实现方法

场景复现

通过接口将从后端获取到的数据展现在表格内,现在需要实现根据关键字的搜索功能

大致功能需求如下:

  • 输入关键字 点击搜索按钮 能够搜索相应的内容
  • 表格能够根据搜索的内容 实时更新数据
  • 当输入框内容清空之后 表格内容能够实时更新优化

初始表格效果:(一文教你实现最简单的table表格)
在这里插入图片描述

源代码:(样式按需设计)
页面组件部分:

<template>
    <router-view />
    <div style="width:100%">
        <div class="select-box">
            <a-form ref="formRef" :inline="true" :model="data.selectData" layout="inline" class="form">
                <a-form-item label="标题" width="200" class="title" >
                    <a-input v-model:value="data.selectData.title" placeholder="请输入关键字" allow-clear  />
                </a-form-item>
                <a-form-item label="详情" width="200" class="body">
                    <a-input v-model:value="data.selectData.body" placeholder="请输入关键字" allow-clear  />
                </a-form-item>
                <a-form-item>
                    <a-button type="primary" @click="searchForm" class="search">
                        <search-outlined />查询
                    </a-button>
                    <a-button type="primary" danger class="reset" @click="resetForm">
                        <redo-outlined />重置
                    </a-button>
                </a-form-item>
            </a-form>
        </div>
        <div>
            <a-table :data-source="data.list" :columns="columns" style="width:100%"></a-table>
        </div>
    </div>
</template>

样式部分:

<style lang="css" scoped>
.select-box .form {
    position: relative;
    left: 20px;
    padding-bottom: 16px;
}
.select-box .search {
    position: relative;
    left:5px;
}
.select-box .reset {
    position: relative;
    left: 25px;
}
</style>

解决方案

UI组件库沿用 ant design vue组件库 ,本次功能实现需要用到icon图标搜索框input按钮button表格table需要回顾组件库使用的可以在文章开头中按需查找。

筛选的实现

原理:

  • 输入框输入数据 → 点击搜索按钮 → 调用搜索函数 → 页面数据更新
  • 双重筛选 → 筛选标题 和 相应内容 (可以通过标题单独搜索 但不能通过内容单独搜索)

代码截图:(含注释)
在这里插入图片描述
搜索函数 源代码:(含注释)

const searchForm = () => {
    console.log(data.selectData.title, data.selectData.body)
    let arr: [LisInt][] = []
    //查询条件是否有值
    if (data.selectData.title || data.selectData.body) {
        if (data.selectData.title) {
            //将过滤出来的数组赋值给arr
            arr = data.list.filter((v: any) => {
                return v.title.indexOf(data.selectData.title) !== -1
            })
        }
        if (data.selectData.body) {
            //将过滤出来的数组赋值给arr
            arr = (data.selectData.body ? arr : data.list).filter((v: any) => {
                return v.body.indexOf(data.selectData.body) !== -1
            })
        }
    } else {
        arr = data.list
        // 将查询结果赋值给data.list在页面中展示
    }
    data.list = arr
    console.log(arr)
}

重置筛选信息

原理: 点击重置按钮 → 调用重置函数 → 返回主界面 → 重新获取数据

重置函数 源代码:

// 重置筛选信息
const  formRef= ref<FormInstance>()
const router = useRouter()
const resetForm = () => {
    formRef.value?.resetFields()
    router.push('/home')
}

优化处理(监听的实现)

原理:清除输入框输入内容 → 检测输入框内容是否为空 → 为空则重新获取数据 → 更新表格数据

监听 源代码:(含注释)

// 数据监听
watch(
    [() => data.selectData.title], // 监听标题
    [() => data.selectData.body],  // 监听内容
    () => {
        // 如果输入框中的内容为空,则再次请求数据
        if (data.selectData.title === "" || data.selectData.body === "") {
           initGetList() // 调用函数
        }
    }
);
// initGetList函数
// const initGetList = async () => {
//                const { data: res } = await getList(data)
//                console.log(res)
//                data.list = res.data
//            }

最终实现效果:
🔥根据标题关键字搜索,内容如下:
在这里插入图片描述
🔥清除输入框内容后,页面自动更新数据:
在这里插入图片描述
🔥输入标题和内容,实现双重搜索:
在这里插入图片描述
🔥单独使用内容搜索,无法实现搜索功能:
在这里插入图片描述
补充说明:

  • 在搜索框内容为空,但用户坚持要搜索时,应弹出弹窗,提醒用户搜索框输入内容不能为空。 这个功能的实现很简单,在搜索函数中添加一个判断操作,如果内容为空则启动弹窗。
  • 不难发现,输入框中有一个清除按钮,这个功能的实现也很简单,在input标签中添加allow-clear即可,但这个功能可能会与重置功能起到冲突,我们可以将重置功能设置为重置两个输入框的内容并返回主界面

以上就是用纯前端过滤的方法实现搜索框根据关键字模糊搜索的功能的全部内容。

下期文章将会用 前后端交互的方式 实现根据关键字进行模糊搜索的功能。

今天的故事到这就结束了,觉得这篇文章有用的小伙伴们,可以点赞➕关注哦~🔥🔥🔥

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10个实用的数据可视化的图表总结

用于深入了解数据的一些独特的数据可视化技术 可视化是一种方便的观察数据的方式&#xff0c;可以一目了然地了解数据块。我们经常使用柱状图、直方图、饼图、箱图、热图、散点图、线状图等。这些典型的图对于数据可视化是必不可少的。除了这些被广泛使用的图表外&#xff0c;…

JUC并发编程第四篇,Java中的各种锁之乐观锁和悲观锁、公平锁和非公平锁、可重入锁以及死锁基础

JUC并发编程第四篇&#xff0c;Java中的各种锁之乐观锁和悲观锁、公平锁和非公平锁、可重入锁以及死锁基础一、乐观锁和悲观锁二、公平锁和非公平锁三、可重入锁(递归锁)四、死锁一、乐观锁和悲观锁 乐观锁&#xff1a; 适合读操作多的场景&#xff0c;不加锁的特点能够使其读操…

《WEB前端框架开发技术》HTML5响应式旅游景区网站——榆林子州HTML+CSS+JavaScript

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…

Cerebral Cortex:调节γ振荡可以促进大脑连接性而改善认知障碍

摘要 老年痴呆症造成了巨大的全球经济负担&#xff0c;但目前还缺乏有效的治疗方法。最近的研究表明&#xff0c;脑电活动的伽马波段波&#xff0c;特别是40赫兹振荡&#xff0c;与高阶认知功能密切相关&#xff0c;可以激活小胶质细胞清除淀粉样蛋白&#xff0d;β沉积。本研究…

FCOS论文复现:通用物体检测算法

摘要&#xff1a;本案例代码是FCOS论文复现的体验案例&#xff0c;此模型为FCOS论文中所提出算法在ModelArts PyTorch框架下的实现。本代码支持FCOS ResNet-101在MS-COCO数据集上完整的训练和测试流程本文分享自华为云社区《通用物体检测算法 FCOS(目标检测/Pytorch)》&#…

UML/SysML和流浪地球的地球发动机

Lucky 2022-11-24 14:33 最近收到的公众号消息有不少是sysml内容&#xff0c;请问老师sysml和uml是什么关系&#xff0c;以后的趋势是sysml取代uml吗&#xff1f; UMLChina潘加宇 SysML和UML不冲突&#xff0c;也不存在取代的关系。 UML是信息系统的建模语言。“信息系统”…

“Signal”背后的bug与解决

背景 熟悉我的老朋友可能都知道&#xff0c;之前为了应对crash与anr&#xff0c;开源过一个“民间偏方”的库Signal&#xff0c;用于解决在发生crash或者anr时进行应用的重启&#xff0c;从而最大程度减少其坏影响。 在维护的过程中&#xff0c;发生过这样一件趣事&#xff0…

python合集1

我的首个python的合集啊~~ 完全给自己看啊 不喜喷了也不里你 一、一维插值 对现有数据进行拟合或插值是数学分析中常见的方式。 通过分析现有数据&#xff0c;得到一个连续的函数&#xff08;也就是曲线&#xff09;&#xff1b;或者更密集的离散方程与已知数据互相吻合&…

HTML+CSS详细知识点(下)

&#x1f525;上一篇&#x1f525;HTMLCSS详细知识点复习&#xff08;上&#xff09; 文章目录五、列表和超链接1、列表标签2、CSS控制列表样式3、超链接六、表格和表单1、表格2、表单七、浮动与定位1、元素的浮动2、清除浮动3、overflow属性4、元素的定位属性5、position属性五…

[附源码]计算机毕业设计springboot安防管理平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【吴恩达机器学习笔记】五、逻辑回归

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4e3;专栏定位&#xff1a;为学习吴恩达机器学习视频的同学提供的随堂笔记。 &#x1f4da;专栏简介&#xff1a;在这个专栏&#xff0c;我将整理吴恩达机器学习视频的所有内容的笔记&…

【Hack The Box】linux练习-- Horizontall

HTB 学习笔记 【Hack The Box】linux练习-- Horizontall &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月27日&#x1f334; &…

Spring Cloud和Dubbo有哪些区别?

Spring Cloud Spring Cloud是⼀个微服务框架&#xff0c;提供了微服务领域中的很多功能组件&#xff0c;并且Spring Cloud是⼀个⼤⽽全的框架 Dubbo Dubbo⼀开始是⼀个RPC调⽤框架&#xff0c;核⼼是解决服务调⽤间的问题 对比&#xff1a; Dubbo则更侧重于服务调⽤&#x…

Nuxt 3.0.0正式发布,集成Element Plus、Ant Design Vue和Arco Design Vue脚手架

发布说明 Nuxt 是使用简便的 Web 框架&#xff0c;用于构建现代和高性能的 Web 应用&#xff0c;可以部署在任何运行 JavaScript 的平台上。 Nuxt 3.0 11天前正式发布了稳定版&#xff0c;3.0 基于 Vue 3&#xff0c;为 TypeScript 提供了 “一等公民” 支持&#xff0c;并进行…

java面试强基(13)

前文链接(61条消息) java面试强基&#xff08;12&#xff09;_一个风轻云淡的博客-CSDN博客https://blog.csdn.net/m0_62436868/article/details/128047427?spm1001.2014.3001.5501 何为反射&#xff1f;反射机制优缺点&#xff1f; ​ 它赋予了我们在运行时分析类以及执行类…

Jenkins部署与基础配置(1)

5 Jenkins 部署与基础配置 IP地址角色172.18.8.19jenkins-master172.18.8.29jenkins-node1172.18.8.39jenkins-node2 [rootjenkins-master ~]# tail -n1 .bashrc PS1\[\e[1;32m\][\[\e[0m\]\[\e[1;32m\]\[\e[1;33m\]\u\[\e[34m\]\h\[\e[1;31m\] \w\[\e[1;32m\]]\[\e[0m\]# [r…

ISCTF新生赛(引用传递简单社工)

猫和老鼠 反序列化题目&#xff1a; <?php //flag is in flag.php highlight_file(__FILE__); error_reporting(0);class mouse { public $v;public function __toString(){echo "Good. You caught the mouse:";include($this->v);}}class cat {public $a;p…

05 Pod:如何理解这个Kubernetes里最核心的概念?

文章目录1 为什么要有pod?2. 为什么Pod 是 Kubernetes 的核心对象&#xff1f;3. 如何用YAML描述Pod?3.1 Pod的基本组成部分3.1.1 最重要的 spec.containers 字段使用3.1.1.1为什么要定义容器启动时要执行的命令&#xff1f;4. 如何使用kubectl 操作Pod?4.1 创建pod4.2 删除…

数据结构与算法之查找算法

数据结构与算法——查找算法 本文将不断更新查找有关算法&#xff0c;由于精力有限&#xff0c;因此本博文将分多次更新&#xff0c;感谢您的关注 文章目录数据结构与算法——查找算法1. 二分法查找&#xff08;折半查找&#xff09;1.1 算法叙述1.2 实例说明2. 插值查找&#…

【ML特征工程】第 8 章 :自动化特征化器:图像特征提取和深度学习

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…