Element-UI封装El-Select-Tree组件(树形下拉选择器)

Element-UI

1、封装Select-Tree组件

在这里插入图片描述 在这里插入图片描述

1.1、代码实现

el-select-tree/index.js

import SelectTree from "./select-tree.vue";

/* istanbul ignore next */
SelectTree.install = function (Vue) {
   
   
  Vue.component(SelectTree.name, SelectTree);
};

export {
   
    SelectTree };

el-select-tree/select-tree.vue

<template>
  <el-select
    :disabled="disabled"
    :size="size"
    :clearable="clearable"
    :placeholder="placeholder"
    :no-data-text="noDataText"
    :popper-class="popperClass"
    :popper-append-to-body="popperAppendToBody"
    :multiple="multiple"
    :value="value"
    @visible-change="handleVisibleChange"
    @remove-tag="handleRemoveTag"
    @clear="handleClear"
    ref="selectRef"
  >
    <el-option
      v-if="data.length !== 0"
      value=""
      style="display: none"
    ></el-option>

    <template v-if="value">
      <el-option
        :value="item[nodeKey]"
        :label="item[props?.label ?? 'label']"
        style="display: none"
        :key="item[nodeKey]"
        v-for="item in optionData"
      ></el-option>
    </template>

    <el-tree
      :node-key
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在本文中,我们将详细介绍如何基于 Element UI 框架开发一个树形选择器(树形下拉框)。Element UI 是一个广泛使用的 Vue.js UI 框架,提供了众多功能强大的组件,例如 el-selectel-tree。但在某些项目中,原生的 el-select 组件可能无法满足树形选项的需求。因此,我们将通过结合这两个组件的特性来实现一个自定义的树形选择器。 在模板部分,我们将 el-selectel-tree 组件进行了组合。el-select 作为外层容器,负责处理基本的选择逻辑;而 el-tree 则作为内部组件,用于展示树形结构的选项。我们通过 el-option 将 el-tree 内嵌其中,并利用绑定属性(如 value、label、props、node-key、default-expanded-keys 和 @node-click)来控制树的显示和交互。以下是核心代码: 为了实现这一功能,我们封装了一个名为 "el-tree-select" 的组件,并为其定义了一系列的 props,包括配置项(props)、选项列表数据(options)、初始值(value)、是否可清空(clearable)以及是否自动收起(accordion)。在组件的 data 中,我们初始化了 valueId、valueTitle 和 defaultExpandedKey。在 mounted 生命周期钩子中,我们调用了 initHandle 方法,用于处理初始值的设置,确保选中状态和展开状态的正确性。在 methods 中,initHandle 方法根据传入的初始值设置显示的值和选中状态。此外,我们还处理了滚动条相关的逻辑,确保选中的节点始终处于可视范围内。 这个改造后的树形
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值