返回顶部
首页 > 资讯 > 精选 >Vue支持搜索与筛选的用户列表如何实现
  • 533
分享到

Vue支持搜索与筛选的用户列表如何实现

2023-07-04 11:07:31 533人浏览 泡泡鱼
摘要

这篇文章主要讲解了“Vue支持搜索与筛选的用户列表如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue支持搜索与筛选的用户列表如何实现”吧!1. 常规风格的示例工程开发首先新建一个名

这篇文章主要讲解了“Vue支持搜索与筛选的用户列表如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue支持搜索与筛选的用户列表如何实现”吧!

1. 常规风格的示例工程开发

首先新建一个名为 nORMal.html测试文件,在HTML文件的head标签中引入Vue框架并设置常规的模板字段如下:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta Http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <script src="https://unpkg.com/vue@next"></script>    <style>        .container {            margin: 50px;        }        .content {            margin: 20px;        }    </style></head><body>    <div id="Application"></div>    <script>        const App = Vue.createApp({         })        App.mount('#Application')    </script></body></html>

为了方便逻辑的演示,我们先不添加样式,先从逻辑上梳理这样一个简单页面应用的开发思路。

第一步,设计页面的根组件的数据框架,分析页面的功能需求,主要有三个:能够渲染用户列表、能够根据输入的关键字进行检索。因此,我们至少需要三个响应式的数据:用户列表数据、性别筛选字段和关键词字段。

定义 组件的data选项如下:

data() {       return {            //性别筛选字段            sexFilter : -1,            //展示的用户列表数据            showDatas : [],            //搜索的关键词            sarchKey : ""        }}

上面定义的属性中,sexFilter 字段的取值可以是 -1、0或1 。 -1表示全部,0表示性别男,1表示性别女。

第二步,思考页面需要支持的行为,首先从网络上请求用户数据,将其渲染到页面上(使用延时函数来模拟这一过程),要支持性别筛选功能,需要定义一个筛选函数来完成,同样要实现关键词检索功能,也需要定义一个检索函数。

定义组件的methods选项如下:

methods: {        //获取用户数据        queryAllData() {             this.showDatas = mock        },        //进行性别筛选        filterData() {             if(this.sexFilter == -1) {                  this.showDatas = mock             }else {                  this.showDatas = mock.filter((data) => {                       return data.sex == this.sexFilter                   })             }         },         //进行关键词检索         searchData() {             if(this.searchKey.length == 0) {                   this.showDatas = mock             }else {                   this.showDatas = mock.filter((data) => {                       //名称中包含输入的关键词则表示匹配成功                       return  data.name.indexOf(this.searchKey) != -1                   })             }         }}

对上面的代码进行汇总,mock变量是本地定义的模拟数据,方便我们测试效果,代码如下:

let mock = [            {                name : "小王",                sex : 0            },            {                name : "小红",                sex : 1            },            {                name : "小李",                sex : 1            },            {                name : "小张",                sex : 0            }        ]

定义好了功能函数,我们需要在合适的时机对其进行调用,queryAllData 方法可以在组件挂载时调用来获取数据,当页面挂载后,延时3秒会获取到测试的模拟数据,代码如下:

mounted() {        //模拟请求过程        setTimeout(() => {              this.queryAllData        }, 3000);},

对于性别筛选和关键词检索功能,可以监听对应的属性,当这些属性发生变化时,进行筛选或检索行为。定义组件的watch选项如下:

watch: {     sexFilter(oldValue,newValue) {          this.filterData()     },     searchKey(oldValue,newValue) {          this.searchData()     }}

至此,我们编写完成当前页面应用的所有逻辑代码。还有第三步需要做,将页面渲染所需的HTML框架搭建完成,示例代码如下:

<div id="Application">        <div class="container">            <div class="content">                <input type="radio" :value="-1" v-model="sexFilter"/>全部                <input type="radio" :value="0" v-model="sexFilter"/>男                <input type="radio" :value="1" v-model="sexFilter"/>女            </div>            <div class="content">搜索:<input type="text" v-model="searchKey" /></div>            <div class="content">                <table border="1" width="300px">                    <tr>                      <th>姓名</th>                      <th>性别</th>                    </tr>                    <tr v-for="(data, index) in showDatas">                      <td>{{data.name}}</td>                      <td>{{data.sex == 0 ? '男' : '女'}}</td>                    </tr>                    </table>            </div>        </div>    </div>

运行代码,可以看到一个支持筛选和检索的用户列表应用以及完成了,效果如下图所示:

Vue支持搜索与筛选的用户列表如何实现

Vue支持搜索与筛选的用户列表如何实现

Vue支持搜索与筛选的用户列表如何实现

2. 使用组合式api重构用户列表页面

vue3提供的组合式API的开发风格可以很好的解决这个问题,我们可以将逻辑都梳理在setup方法中,相同的逻辑点聚合性更强,更易阅读和扩展。

使用组合式API重写后的完整代码如下:

let mock = [            {                name:"小王",                sex:0            },{                name:"小红",                sex:1            },{                name:"小李",                sex:1            },{                name:"小张",                sex:0            }        ]        const App = Vue.createApp({            setup() {                // 用户列表                const showDatas = Vue.ref([])                const queryAllData = () => {                    // 模拟请求过程                    setTimeout(()=>{                        showDatas.value = mock                    }, 3000);                }                // 组件挂载是请求数据                Vue.onMounted(queryAllData)                let sexFilter = Vue.ref(-1)                let searchKey = Vue.ref("")                let filterData = () => {                    if (sexFilter.value == -1) {                        showDatas.value = mock                    } else  {                        showDatas.value = mock.filter((data)=>{                            return data.sex == sexFilter.value                        })                    }                }                searchData = () =>  {                    if (searchKey.value.length == 0) {                        showDatas.value = mock                    } else  {                        showDatas.value = mock.filter((data)=>{                            return data.name.search(searchKey.value) != -1                         })                    }                }                // 添加侦听                Vue.watch(sexFilter, filterData)                Vue.watch(searchKey, searchData)                return {                    showDatas,                    searchKey,                    sexFilter                }            },            template: `            <div class="container">                <div class="content">                    <input type="radio" :value="-1" v-model="sexFilter"/>全部                    <input type="radio" :value="0" v-model="sexFilter"/>男                    <input type="radio" :value="1" v-model="sexFilter"/>女                </div>                <div class="content">搜索:<input type="text" v-model="searchKey" /></div>                <div class="content">                    <table border="1" width="300px">                        <tr>                        <th>姓名</th>                        <th>性别</th>                        </tr>                        <tr v-for="(data, index) in showDatas">                        <td>{{data.name}}</td>                        <td>{{data.sex == 0 ? '男' : '女'}}</td>                        </tr>                        </table>                </div>            </div>            `        })        App.mount("#Application")

在使用组合式API编写代码时,特别要注意,对于需要使用的响应式数据,要使用 ref 方法或 Reactive方法进行包装。

3. 优化用户列表页面

在上一节中我们通过组合式API重写了用户列表页面,但是现在页面筛选和搜索功能都比较生硬,在本节,我们尝试给他添加一些动画效果。

首先要实现列表动画效果,需要对定义的组件模板结果做一下改动,示例代码如下:

template: `            <div class="container">                <div class="content">                    <input type="radio" :value="-1" v-model="sexFliter"/>全部                    <input type="radio" :value="0" v-model="sexFliter"/>男                    <input type="radio" :value="1" v-model="sexFliter"/>女                </div>                <div class="content">搜索:<input type="text" v-model="searchKey" /></div>                <div class="content">                    <div class="tab" width="300px">                        <div>                        <div class="item">姓名</div>                        <div class="item">性别</div>                        </div>                        <transition-group name="list">                            <div v-for="(data, index) in showDatas" :key="data.name">                            <div class="item">{{data.name}}</div>                            <div class="item">{{data.sex == 0 ? '男' : '女'}}</div>                            </div>                        </transition-group>                    </div>                </div>            </div>            `

对应的,定义CSS样式与动画样式如下:

        .container {            margin: 50px;        }        .content {            margin: 20px;        }        .tab {            width: 300px;            position: absolute;        }        .item {            border: gray 1px solid;            width: 148px;            text-align: center;            transition: all 0.8s ease;            display: inline-block;        }        .list-enter-active {            transition: all 1s ease;        }        .list-enter-from,        .list-leave-to {            opacity: 0;        }        .list-move {            transition: transform 1s ease;        }        .list-leave-active {            position: absolute;            transition: all 1s ease;        }

现在运行代码,可以看到当对用户列表进行筛选、搜索时,列表的变化以及有了动画过渡效果:

Vue支持搜索与筛选的用户列表如何实现

感谢各位的阅读,以上就是“Vue支持搜索与筛选的用户列表如何实现”的内容了,经过本文的学习后,相信大家对Vue支持搜索与筛选的用户列表如何实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Vue支持搜索与筛选的用户列表如何实现

本文链接: https://lsjlt.com/news/344344.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vue支持搜索与筛选的用户列表如何实现
    这篇文章主要讲解了“Vue支持搜索与筛选的用户列表如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue支持搜索与筛选的用户列表如何实现”吧!1. 常规风格的示例工程开发首先新建一个名...
    99+
    2023-07-04
  • Vue支持搜索与筛选的用户列表实现流程介绍
    目录1. 常规风格的示例工程开发2. 使用组合式API重构用户列表页面3. 优化用户列表页面1. 常规风格的示例工程开发 首先新建一个名为 normal.html 的测试文件,在HT...
    99+
    2022-11-13
    Vue支持搜索的用户列表 Vue支持筛选的用户列表 Vue用户列表
  • RiSearch PHP 实现动态筛选与聚合搜索的技巧
    引言:随着互联网的发展和数据规模的增加,搜索引擎的功能需求也越来越多样化。用户不再满足于简单的关键字搜索,而是希望能够根据自己的需求进行筛选和聚合搜索。RiSearch 是一个基于 PHP 的高性能全文搜索引擎,可以满足动态筛选和聚合搜索的...
    99+
    2023-10-21
    PHP (编程语言) RiSearch (实时搜索引擎) 动态筛选与聚合搜索
  • vue如何实现input输入框关键字筛选检索列表数据展示功能
    小编给大家分享一下vue如何实现input输入框关键字筛选检索列表数据展示功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ht...
    99+
    2024-04-02
  • vue+elementui如何实现下拉表格多选和搜索功能
    这篇文章主要介绍“vue+elementui如何实现下拉表格多选和搜索功能”,在日常操作中,相信很多人在vue+elementui如何实现下拉表格多选和搜索功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”v...
    99+
    2023-06-21
  • 微信小程序如何实现列表条件筛选
    这篇文章主要介绍“微信小程序如何实现列表条件筛选”,在日常操作中,相信很多人在微信小程序如何实现列表条件筛选问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序如何实现列表条件筛选”的疑惑有所帮助!接下来...
    99+
    2023-07-02
  • vuejs如何通过filterBy、orderBy实现搜索筛选、降序排序数据
    小编给大家分享一下vuejs如何通过filterBy、orderBy实现搜索筛选、降序排序数据,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!先上输入前的样子:<style> #...
    99+
    2024-04-02
  • Vue如何实现列表过滤与排序
    这篇文章主要讲解了“Vue如何实现列表过滤与排序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue如何实现列表过滤与排序”吧!一、数据过滤watch实现<!DOCTYPE ...
    99+
    2023-06-30
  • Vue中如何用Vant实现顶部搜索栏
    这篇文章主要介绍了Vue中如何用Vant实现顶部搜索栏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue中如何用Vant实现顶部搜索栏文章都会有所收获,下面我们一起来看看吧。搜索栏组件源码(SearchBar...
    99+
    2023-07-04
  • redis如何用队列实现历史搜索功能
    1、使用phpinfo()函数查看你的配置,匹配对应的redis扩展版本(注:以下案例为window系统下进行).2、下载redis扩展redis扩展下载地址:https://windows.php.net...
    99+
    2024-04-02
  • jQuery UI如何仿淘宝实现搜索下拉列表功能
    这篇文章主要为大家展示了“jQuery UI如何仿淘宝实现搜索下拉列表功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery UI如何仿淘宝实现搜索下拉...
    99+
    2024-04-02
  • vue如何实现点击选中商品列表的功能
    本篇内容主要讲解“vue如何实现点击选中商品列表的功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue如何实现点击选中商品列表的功能”吧!在Vue中,实现点击选中列表非常简单,只需要使用Vu...
    99+
    2023-07-05
  • 如何使用Vue的过滤器功能来实现模糊搜索
    Vue.js是一款流行的JavaScript框架之一,它提供了许多有用的功能,包括Vue的过滤器。在本文中,我们将介绍如何使用Vue的过滤器功能来实现模糊搜索。在Vue.js中,过滤器是用于转换文本的函数,常常用于格式化文本输出。在本例中,...
    99+
    2023-05-14
  • Vue中Element的table多选表格如何实现单选
    目录Element的table多选表格实现单选vue table单选逻辑Element的table多选表格实现单选 效果图 1.在多选表格的基础上进行处理, 呈现单选表格的作用 2...
    99+
    2024-04-02
  • JS如何模仿淘宝实现搜索框用户输入事件
    小编给大家分享一下JS如何模仿淘宝实现搜索框用户输入事件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!淘宝是我们经常用的一个网上...
    99+
    2024-04-02
  • vue如何实现一个带有触摸屏支持的3D球
    这篇文章主要讲解了“vue如何实现一个带有触摸屏支持的3D球”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue如何实现一个带有触摸屏支持的3D球”吧!准备工作首先,我们需要使用Vue CL...
    99+
    2023-07-05
  • Linux中如何实现支持Exchange ActiveSync协议的邮件客户端
    这篇文章将为大家详细讲解有关Linux中如何实现支持Exchange ActiveSync协议的邮件客户端,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Exchange ActiveSync 是一种 Ex...
    99+
    2023-06-28
  • angularjs如何实现下拉列表的选中事件
    这篇文章主要介绍了angularjs如何实现下拉列表的选中事件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。select标签的对于大家来说很...
    99+
    2024-04-02
  • 如何使用solr实现商品的搜索功能
    小编给大家分享一下如何使用solr实现商品的搜索功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!为什么要用solr服务,为什么要用luncence?问题提出:当...
    99+
    2023-05-30
    solr
  • 如何使用JavaScript实现select所支持的功能
    小编给大家分享一下如何使用JavaScript实现select所支持的功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作