通过RegExp实现 element UI tree 高亮显示(样式改变)搜索框过滤内容

这篇具有很好参考价值的文章主要介绍了通过RegExp实现 element UI tree 高亮显示(样式改变)搜索框过滤内容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        通过RegExp对象动态的实现字体样式的添加与删除。
element UI 中,树形控件进行过滤操作时,经常要求所搜字体进行一个高亮显示。

        树形控件中提供了一个Attributes(属性) : filter-node-method 

解释为:对树节点进行筛选时执行的方法,返回 true 表示这个节点可以显示,返回 false 则表示这个节点会被隐藏。

效果如下:

        通过RegExp实现 element UI tree 高亮显示(样式改变)搜索框过滤内容

 现对其进行高亮显示:(所搜索字体变红)

用正则表达式来实现该功能。

关键代码:

          // 高亮过滤文本
          if(filterText){
            data.displayName = data.displayName.replace(
              new RegExp(filterText, 'gi'),
              `<span style="color: red" >$&</span>`,
            )
          }

将标签插入到dom中,得是这种形式:

<span v-html="`${node.label}`"></span>

所以在el-tree标签中,插入了 <template slote-scope = "{node}" ></template> 

如果用插值表达式:

<span>{{ node.label }}</span>

插入的span标签会被当做字符串处理的,不可用。

全部代码:

<template>
  <div>
    <el-input placeholder="输入关键字进行过滤" v-model="filterText"> </el-input>
    <el-tree
      class="filter-tree"
      :data="data"
      :props="defaultProps"
      default-expand-all
      :filter-node-method="filterNode"
      ref="tree"
    >
      <template slot-scope="{ node}">
                <div>
                  <span v-html="`${node.label}`"></span>
                   <!-- <span>{{ node.label }}</span> -->
                </div>
      </template>
    </el-tree>
  </div>
</template>
<script>
export default {
  data() {
    return {
      filterText: '',
      data: [
        {
          id: 1,
          displayName: '美食',
          children: [
            {
            id: 1-1,
            displayName: '怀安豆腐皮',
            },
            {
            id: 1-2,
            displayName: '正定八大碗',
            },
            {
            id: 1-3,
            displayName: '承德荞面饸饹荞面',
            },
            {
            id: 1-4,
            displayName: '张家口蔚县黄糕',
            },

          ]
        },
        {
          id:2,
          displayName:'景点',
          children:[
            {
            id: 2-1,
            displayName: '石家庄佛光山景区',
            },
            {
            id: 2-2,
            displayName: '承德避暑山庄',
            },
            {
            id: 2-3,
            displayName: '保定狼牙山景区',
            },
            {
            id: 2-4,
            displayName: '张家口黄帝城文化旅游区',
            },
          ]
        }
        ],
        defaultProps: {
          children: 'children',
          label: 'displayName'
        }
    };
  },
  watch: {
      filterText(val) {
        this.$refs.tree.filter(val);
      }
  },
  methods: {
      filterNode(value, data, node) {
        if (data.children) {
          node.expanded = true
          return true
        }
        const { filterText } = this
        // 根据标签名称进行过滤
        if (
          data.displayName.toUpperCase().includes(filterText.toUpperCase())
        ) {
          // 高亮过滤文本
          if(filterText){
            data.displayName = data.displayName.replace(
              new RegExp(filterText, 'gi'),
              `<span style="color: red" >$&</span>`,
            )
          }
          return true
        }
          return false
      },
  },
};
</script>
data.oldName?(data.displayName = data.oldName):(data.oldName = data.displayName)

 这一句也很重要,目的是动态取消添加样式后的字体。

效果:

通过RegExp实现 element UI tree 高亮显示(样式改变)搜索框过滤内容


 通过RegExp实现 element UI tree 高亮显示(样式改变)搜索框过滤内容

结束。文章来源地址https://www.toymoban.com/news/detail-400543.html

到了这里,关于通过RegExp实现 element UI tree 高亮显示(样式改变)搜索框过滤内容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • element-tree树结构-默认选中第一个节点高亮-根据id选中节点高亮

    前言 tree树结构是在开发中经常使用的组件,比如区域树,楼层树,组织架构树,等等包含节点关系 实际开发可能需要我们一进到页面选中树形结构第一个节点,并且调用数据,来达到用户体验 在用户选择之后,通过本地存储的方式把楼层id存起来,刷新之后获取楼层id,调

    2024年02月09日
    浏览(62)
  • element ui tree树形控件实现单选操作

    template     div class=\\\"createPost-container\\\"         el-form ref=\\\"postForm\\\" :model=\\\"postForm\\\" class=\\\"form-container\\\"             div class=\\\"createPost-main-container\\\"                 el-row                     el-col :span=\\\"24\\\"                         el-form-itemspan style=\\\"color:red;\\\"提示:带

    2024年02月06日
    浏览(33)
  • Element-UI控件Tree实现数据树形结构

            在前端开发中,有时会遇到所有菜单数据在同一级的情况,后端未对数据进行分级处理;但前端渲染需要是树状结构的数据,如何实现数据的树状化?将数组中通过父节点的ID与子节点的parentId关联,通过递归函数来实现。         前端框架这里使用element-ui的tree控件

    2024年02月05日
    浏览(40)
  • element-ui 表格el-table的列内容溢出省略显示,鼠标移上显示全部和定制样式

       1、在对应列加上省略显示show-overflow-tooltip属性,如果加上这属性,鼠标移上还是没效果,要考滤是不是层级的原因,被其他挡住了。    效果如下图: 2、定制样式: 默认提示框主题色是黑色,如果想改成浅色和改变提示框的宽度,则需要加复盖样式: 最后效果:

    2024年02月13日
    浏览(27)
  • Element Ui Tree组件实现增、删、改、查、拖拽节点 的树形结构

    介绍:首先组件 | Element官网某些功能都具备了,这里我就把这些功能结合在一起更完美的使用,其次 编辑节点 官网是没有实例,所以这里搞了一套较完整的功能,其次编辑和添加,这里直接使用了弹窗(顾及到多个参数设置),接下来效果图展示! 效果图如下: 1,其中点

    2024年02月13日
    浏览(44)
  • 【前端】- 在使用Element UI 的el-tree组件时,从底层去研究如何去实现一键展开/关闭【tree节点】的功能

    点击前效果: 点击后效果: 页面部分:这里是简单的数结构渲染,不多讲,$refs.Reftree获取的是el-tree的实例,具体作用请看下面的方法。 方法部分:该方法传入el-tree实例,直接点击按钮即可实现展开或者关闭,这里简单讲解一下 1、ref.store.root.childNodes 通过实例来调用tree组

    2024年04月16日
    浏览(39)
  • element UI 中的 el-tree 实现 checkbox 单选框功能,及 bus 传递参数的方法

    el-tree 单选功能 在日常项目开发中,会经常遇到,树形结构的查询方式,为了快速方便开发,常常会使用到快捷的ui组件去快速搭树形结构,这里我用的是 element ui 中的 el-tree 。第一次接触这种功能的时候也是各种网站查询,虽然也都能实现功能,但是都会有一些小问题,就

    2024年04月10日
    浏览(32)
  • el-tree 实现节点高亮

    要实现显示  el-tree  节点高亮,可以使用  el-tree  提供的  highlight-current  属性和  current-node-key  属性,以及  el-tree-node  组件提供的  highlight  属性。 首先,在  el-tree  组件中设置  highlight-current  属性为  true ,表示启用高亮当前节点的功能: 然后,在  el-tree  组件中

    2024年02月08日
    浏览(31)
  • Vue Element ui导航栏选中高亮,刷新后选中消失

    导航栏选中后重新刷新页面会发现选中的导航栏高亮消失了,或者跳到了其它选项,这里的思路就是定义方法,把路由存入到sessionStorage,页面重新加载的时候从sessionStorage中获取

    2024年02月15日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包