Vue实现树形下拉菜单

基于vue生成树形下拉菜单,结合el-select和el-tree来实现。
做个记录吧,避免后续遇到问题一时间又得查文档
实现效果
在这里插入图片描述

下面是代码
vue:

<el-select filterable :filter-method="(value) => filterRuleTree(value)" clearable v-model="searchForm.componentsName" placeholder="请选择" size="small" ref="addTreeBySearch">
  <el-option
    :value="selectTree"
  >
  <el-tree :data="treeList" :props="defaultProps" @node-click="handleNodeClickBySearch" ref="dataTree" :filter-node-method="treeFilterNode"></el-tree>
  </el-option>
</el-select>

js:

<script>
  export default {
    data() {
      return {
    selectTree: [],
    searchForm: {
      componentsName: '', //组件名称
      componentsCode: '', //组件编码
    },
        treeList: : [{
          label: '一级 1',
          children: [{
            label: '二级 1-1',
            children: [{
              label: '三级 1-1-1'
            }]
          }]
        }, {
          label: '一级 2',
          children: [{
            label: '二级 2-1',
            children: [{
              label: '三级 2-1-1'
            }]
          }, {
            label: '二级 2-2',
            children: [{
              label: '三级 2-2-1'
            }]
          }]
        }, {
          label: '一级 3',
          children: [{
            label: '二级 3-1',
            children: [{
              label: '三级 3-1-1'
            }]
          }, {
            label: '二级 3-2',
            children: [{
              label: '三级 3-2-1'
            }]
          }]
        }],
        defaultProps: {
          children: 'children',
          label: 'label'
        }
      };
    },
    methods: {
    filterRuleTree(data) {
      if (data !== undefined) {
        this.$refs['dataTree'].filter(data);
      }
    },
    treeFilterNode(value, data) {
      if (!value) return true;
      return data.label.indexOf(value) !== -1;
    },
    //搜索框点击树
    handleNodeClickBySearch(data) {
      this.searchForm.componentsCode = data.value;
      this.searchForm.componentsName = data.label;
      this.$refs.addTreeBySearch.blur();
    },
    }
  };
</script>

下面讲解下具体方法是做什么的
handleNodeClickBySearch是用作点击树形结构参数的触发事件。
this.$refs.addTreeBySearch.blur();是点击完数据后,下拉菜单收回。
filterRuleTree和treeFilterNode是用作菜单的查询操作。
treeList是数据信息。
selectTree目前没用上可用可不用,自己试试
searchForm是我的查询参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值