vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > VUE侧边导航栏筛选过滤

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

作者:晚风予星

本文主要介绍了VUE侧边导航栏实现筛选过滤的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

需求

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

筛选效果:

2023-05-14 20.29.01.gif

2023-05-14 20.29.30.gif

清除筛选条件:

2023-05-14 20.29.53.gif

思路

实现

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侧边导航栏筛选过滤内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文