VUE侧边导航栏实现筛选过滤的示例代码

 更新时间:2023年05月17日 09:43:11   作者:晚风予星  
本文主要介绍了VUE侧边导航栏实现筛选过滤的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

需求

实现侧边导航栏的同时,需要实现筛选功能。且由于导航名称中可能包含大写英文字母,所以还需要支持小写英文字母筛选。

筛选效果:

2023-05-14 20.29.01.gif

2023-05-14 20.29.30.gif

清除筛选条件:

2023-05-14 20.29.53.gif

思路

  • 监听el-input的回车事件:@keydown.enter.native
  • 将父组件传过来的导航栏数据进行深拷贝一层,并新建一个数组newMenuList进行存储匹配的导航栏数据:const copySideMenuList = JSON.parse(JSON.stringify(this.sideMenuList));
    • 深拷贝一层,为了防止原数据在搜索一次后被篡改,因为引用的是同一个内存地址
  • el-input中输入的字符串中的小写字母转为大写字母:event = event.toUpperCase();
  • 使用includes方法判断导航栏的名字中是否有el-input中的数据,如果有则将这一项整个pushnewMenuList中,最后判断newMenuListlength是否大于0,如果大于0则将newMenuList赋值给导航栏组件需要的数据中,如果newMenuListlength不大于0则进行提示:未匹配到该菜单
  • el-input执行clearable操作或者el-input中输入为空时,将父组件传过来的导航栏数据赋值到导航栏组件所需要的数据中

实现

  • 这里使用到el-inputclearable@clear@keydown.enter.native
  • 注意:因为是el-input标签的本质其实是elementUI的一个组件,所以监听回车键需要添加事件修饰符.native,它允许我们在自定义的组件标签中添加原生的DOM事件
    • 其他的elementUI组件也是可以用这个方法来绑定原生DOM事件
    • el-button之所以可以直接使用@click是因为elementUI在创建组件时就为<el-button>里面的<button>标签绑定了一个click事件,相当于是官方提前为我们准备好了一个click接口,我们看似是在调用原生jsclick事件,实际上是在调用elementUI官方为我们提前准备好的方法。

image.png

主要代码如下:

<el-input placeholder="输入关键字进行过滤" v-model="filterText" class="side-menu__filter" size="small" clearable suffix-icon="el-icon-search" @clear="handleSearch(filterText)" @keydown.enter.native="handleSearch(filterText)"></el-input>
handleSearch(event) {
      // 将将输入的字符串中的小写字母转为大写字母
      event = event.toUpperCase();
      let newMenuList = [];
      // 将父组件传过来的导航栏数据进行深拷贝一层
      const copySideMenuList = JSON.parse(JSON.stringify(this.sideMenuList));
      copySideMenuList.forEach((firstItem) => {
        // 循环判断导航栏数据是否匹配到搜索的字符
        if (firstItem.label.includes(event)) {
          newMenuList.push(firstItem);
        }
        if (!firstItem.label.includes(event) && firstItem.children) {
          for (let secondItem of firstItem.children) {
            if (secondItem.label.includes(event)) {
              newMenuList.push(secondItem);
            }
          }
        }
      });
      if (newMenuList.length > 0) {
        this.menuList = newMenuList;
      } else {
        this.$message.warning('未匹配到该菜单');
      }
      // 搜索字符串为空时返回原数据
      if (event == '') {
        this.menuList = this.sideMenuList;
      }
    }

到此这篇关于VUE侧边导航栏实现筛选过滤的示例代码的文章就介绍到这了,更多相关VUE侧边导航栏筛选过滤内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue中uni-app 实现小程序登录注册功能

    vue中uni-app 实现小程序登录注册功能

    这篇文章主要介绍了uni-app 实现小程序登录注册功能,文中给大家介绍了实现思路,以及vuex和本地缓存的区别,需要的朋友可以参考下
    2019-10-10
  • Vue Element前端应用开发之动态菜单和路由的关联处理

    Vue Element前端应用开发之动态菜单和路由的关联处理

    这篇文章主要介绍了Vue Element前端应用开发之动态菜单和路由的关联处理,对vue感兴趣的同学,可以参考下
    2021-05-05
  • Vue 禁用浏览器的前进后退操作

    Vue 禁用浏览器的前进后退操作

    这篇文章主要介绍了Vue 禁用浏览器的前进后退操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • OpenDataV低代码平台新增组件流程详解

    OpenDataV低代码平台新增组件流程详解

    这篇文章主要为大家介绍了OpenDataV低代码平台新增组件流程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • vue 避免变量赋值后双向绑定的操作

    vue 避免变量赋值后双向绑定的操作

    这篇文章主要介绍了vue 避免变量赋值后双向绑定的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue/cli和vue版本对应及安装方式

    vue/cli和vue版本对应及安装方式

    这篇文章主要介绍了vue/cli和vue版本对应及安装方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • 浅谈vue中所有的封装方式总结

    浅谈vue中所有的封装方式总结

    因为现在vue的流行,vue的各种插件都出来了,我们公司也是使用vue做项目,那么应该如何封装,本文就介绍一下如何封装,感兴趣的可以了解一下
    2021-07-07
  • Vue.js学习之计算属性

    Vue.js学习之计算属性

    Vue.js 的内联表达式非常方便,但它最合适的使用场景是简单的布尔操作或字符串拼接。如果涉及更复杂的逻辑,你应该使用计算属性。下面这篇文章主要给大家介绍了Vue.js中的计算属性,需要的朋友可以参考借鉴,一起来看看吧。
    2017-01-01
  • vue过滤器filter的使用方法详解

    vue过滤器filter的使用方法详解

    这篇文章主要给大家介绍了关于vue过滤器filter的使用方法,Vue.js的过滤器(Filter)是一种可重用的功能,用于对文本进行格式化,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • 解决Vue项目中Emitted value instead of an instance of Error问题

    解决Vue项目中Emitted value instead of an 

    这篇文章主要介绍了解决Vue项目中Emitted value instead of an instance of Error问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论