当前位置:首页 > 前端教程

elementui 树

2026-03-06 04:54:50前端教程

ElementUI 树形组件(Tree)使用指南

ElementUI 提供了 el-tree 组件,用于展示层级结构的数据,如文件目录、组织架构等。以下是详细的使用方法和常见场景的解决方案。

基础用法

el-tree 组件需要传入 data 属性来渲染树形结构。数据格式通常是一个嵌套数组,每个节点包含 labelchildren 字段。

<template>
  <el-tree :data="treeData"></el-tree>
</template>

<script>
export default {
  data() {
    return {
      treeData: [
        {
          label: '一级 1',
          children: [
            { label: '二级 1-1' },
            { label: '二级 1-2' }
          ]
        },
        {
          label: '一级 2',
          children: [
            { label: '二级 2-1' },
            { label: '二级 2-2' }
          ]
        }
      ]
    }
  }
}
</script>

自定义节点内容

可以通过 scoped slot 自定义节点的显示内容,例如添加图标或按钮。

<el-tree :data="treeData">
  <template #default="{ node, data }">
    <span>{{ node.label }}</span>
    <el-button size="mini" @click="handleClick(data)">操作</el-button>
  </template>
</el-tree>

节点选中与复选框

el-tree 支持单选和多选模式:

elementui 树

  • 单选模式:通过 highlight-current 启用高亮选中。
  • 多选模式:设置 show-checkbox 属性,节点前会显示复选框。
<el-tree
  :data="treeData"
  show-checkbox
  node-key="id"
  :default-expanded-keys="[2, 3]"
  :default-checked-keys="[5]">
</el-tree>

动态加载数据

对于大数据量的树形结构,可以使用 lazy 模式动态加载子节点。

<el-tree
  :props="props"
  :load="loadNode"
  lazy>
</el-tree>

<script>
export default {
  data() {
    return {
      props: {
        label: 'name',
        children: 'children',
        isLeaf: 'leaf'
      }
    }
  },
  methods: {
    loadNode(node, resolve) {
      if (node.level === 0) {
        resolve([{ name: '根节点' }])
      } else {
        setTimeout(() => {
          resolve([
            { name: '子节点 1', leaf: true },
            { name: '子节点 2', leaf: false }
          ])
        }, 500)
      }
    }
  }
}
</script>

节点过滤

通过 filter-node-method 实现节点过滤功能。

<el-input v-model="filterText" placeholder="输入关键字过滤"></el-input>
<el-tree
  ref="tree"
  :data="treeData"
  :filter-node-method="filterNode">
</el-tree>

<script>
export default {
  data() {
    return {
      filterText: ''
    }
  },
  watch: {
    filterText(val) {
      this.$refs.tree.filter(val)
    }
  },
  methods: {
    filterNode(value, data) {
      if (!value) return true
      return data.label.includes(value)
    }
  }
}
</script>

常用事件

el-tree 提供了多个事件,如 node-click(节点点击)、check-change(复选框变化)等。

elementui 树

<el-tree
  :data="treeData"
  @node-click="handleNodeClick"
  @check-change="handleCheckChange">
</el-tree>

<script>
export default {
  methods: {
    handleNodeClick(data, node) {
      console.log('点击节点:', data.label)
    },
    handleCheckChange(data, checked, indeterminate) {
      console.log('复选框变化:', data.label, checked)
    }
  }
}
</script>

常见问题

  1. 如何获取选中的节点?

    • 使用 getCheckedNodes 方法获取已选中的节点列表。
      const checkedNodes = this.$refs.tree.getCheckedNodes()
  2. 如何展开/折叠所有节点?

    • 调用 setCurrentKeyexpandAll / collapseAll 方法。
      this.$refs.tree.expandAll() // 展开所有节点
      this.$refs.tree.collapseAll() // 折叠所有节点
  3. 如何动态更新数据?

    • 直接修改 data 属性,树会自动重新渲染。

以上是 el-tree 的常用功能和示例,适用于大多数树形结构的开发需求。如需更高级的定制,可参考 ElementUI 官方文档

标签: elementui
分享给朋友:

相关文章

elementui实例

elementui实例

以下是关于 Element UI 实例的整理内容,涵盖常见组件用法和实际开发中的关键点: 安装与基础配置 通过 npm 安装 Element UI: npm install element-ui…

手机elementui

手机elementui

根据搜索结果,Element UI 是一个基于 Vue.js 的桌面端组件库,但若需在移动端使用类似风格的组件库,以下是与手机端适配的替代方案及实现建议: 移动端替代方案 Vant 专为移动端设计的…

elementui tabs

elementui tabs

ElementUI Tabs 基础用法 ElementUI 的 Tabs 组件提供了一种便捷的方式来组织内容,通过标签页的形式展示不同板块的信息。使用 el-tabs 和 el-tab-pane 组件…

elementui系列

elementui系列

Element UI 系列概述 Element UI 是一套基于 Vue.js 的桌面端组件库,由饿了么前端团队开发并开源。它提供了丰富的 UI 组件,适用于快速构建企业级中后台产品。以下是 Elem…

elementui密码

elementui密码

Element UI 密码输入框 Element UI 提供了 el-input 组件用于密码输入,通过设置 type="password" 属性即可实现密码输入框功能。密码输入框默认会隐藏输入内容,…

antd elementui

antd elementui

Ant Design(AntD)和 Element UI 是两个流行的前端 UI 组件库,均基于 React 和 Vue 框架设计。以下是两者的对比和核心特点: Ant Design (AntD)…