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

elementui树状

2026-01-16 16:32:00前端教程

ElementUI 树形组件使用指南

ElementUI 提供了 el-tree 组件,用于展示树形结构数据,支持节点展开/折叠、多选、懒加载等功能。以下是其核心用法及示例代码。

基础树形结构

通过 data 属性传入树形数据,每个节点需包含 label(显示文本)和 children(子节点)字段。

<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 自定义节点显示内容,使用 #default="{ node, data }" 获取当前节点信息。

<el-tree :data="treeData">
  <template #default="{ node, data }">
    <span>{{ node.label }}</span>
    <span style="color: #999; margin-left: 10px;">{{ data.description || '' }}</span>
  </template>
</el-tree>

节点选择与事件

通过 show-checkbox 开启多选,监听 check-change 事件获取选中节点。

<el-tree
  :data="treeData"
  show-checkbox
  @check-change="handleCheckChange"
></el-tree>

<script>
export default {
  methods: {
    handleCheckChange(data, checked, indeterminate) {
      console.log(data, checked, indeterminate);
    }
  }
};
</script>

懒加载子节点

通过 lazyload 方法实现动态加载子节点,适用于大数据量场景。

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

<script>
export default {
  data() {
    return {
      props: {
        label: 'name',
        children: 'zones',
        isLeaf: 'leaf'
      }
    };
  },
  methods: {
    loadNode(node, resolve) {
      if (node.level === 0) {
        // 加载根节点
        resolve([{ name: 'Region 1' }, { name: 'Region 2' }]);
      } else {
        // 模拟异步加载子节点
        setTimeout(() => {
          resolve([
            { name: 'Leaf ' + node.level, leaf: true }
          ]);
        }, 500);
      }
    }
  }
};
</script>

常用属性与方法

  • 属性

    • default-expand-all:默认展开所有节点。
    • node-key:指定节点唯一标识字段(如 id)。
    • expand-on-click-node:点击节点时展开/折叠。
  • 方法

    elementui树状

    • getCheckedNodes():获取选中的节点数组。
    • setCheckedKeys(keys):通过 key 设置选中状态。
<el-tree
  ref="tree"
  :data="treeData"
  show-checkbox
  node-key="id"
></el-tree>

<button @click="getChecked">获取选中节点</button>

<script>
export default {
  methods: {
    getChecked() {
      const nodes = this.$refs.tree.getCheckedNodes();
      console.log(nodes);
    }
  }
};
</script>

注意事项

  • 数据格式需严格符合 labelchildren 结构,或通过 props 自定义字段名。
  • 懒加载时需确保 isLeaf 字段正确标识叶子节点,避免重复加载。
  • 多选模式下,getCheckedNodes 返回的节点包含半选状态父节点,需根据业务逻辑过滤。

通过以上方法,可快速实现树形数据展示与交互功能。

标签: 树状elementui
分享给朋友:

相关文章

iwiew elementui

iwiew elementui

iView 与 Element UI 对比 iView 和 Element UI 都是基于 Vue.js 的 UI 组件库,适用于快速开发企业级中后台管理系统。以下是两者的详细对比: 设计风格…

elementui实例

elementui实例

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

elementui api

elementui api

以下是 Element UI 常用 API 的整理说明,按照组件分类呈现: Form 表单 model 绑定表单数据对象rules 表单验证规则validate 方法用于整体表单验证resetFie…

elementui uniapp

elementui uniapp

使用 Element UI 与 UniApp 结合的方法 Element UI 是一个基于 Vue.js 的桌面端组件库,而 UniApp 是一个跨平台开发框架。两者结合需要特殊处理,因为 Eleme…

elementui动态

elementui动态

ElementUI 动态组件与数据绑定 ElementUI 支持动态渲染组件和数据绑定,常用于表格、表单等场景的动态生成。通过 v-for 和动态属性绑定实现组件灵活配置。 动态生成表格列 <…

antd elementui

antd elementui

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