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

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 }" 获取当前节点信息。

elementui树状

<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 方法实现动态加载子节点,适用于大数据量场景。

elementui树状

<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:点击节点时展开/折叠。
  • 方法

    • 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
分享给朋友:

相关文章

vue 实现树状

vue 实现树状

Vue 实现树状结构的方法 递归组件实现树状结构 递归组件是 Vue 中实现树状结构的常见方法。通过组件自身调用自身,可以轻松构建多层级树状结构。 <template> <u…

elementui响应式布局

elementui响应式布局

响应式布局基础概念 响应式布局指页面能够根据屏幕尺寸自动调整结构和样式,确保在不同设备上呈现良好的用户体验。Element UI 基于 Vue.js,其组件默认支持响应式设计,但需结合 CSS 媒体查…

elementui中文网

elementui中文网

Element UI 中文网相关信息 Element UI 是一款基于 Vue.js 的开源 UI 组件库,由饿了么前端团队开发和维护。以下是关于 Element UI 中文网的相关信息: 官方网站…

elementui升级plus

elementui升级plus

Element UI 升级到 Element Plus 的方法 Element Plus 是 Element UI 的升级版本,专为 Vue 3 设计,提供了更好的性能和更多新特性。以下是升级的具体步…

elementui table

elementui table

ElementUI Table 基本用法 ElementUI 的 Table 组件用于展示结构化数据,支持排序、筛选、分页等功能。以下是一个基础示例: <template> &…

elementui使用

elementui使用

安装 Element UI 通过 npm 或 yarn 安装 Element UI: npm install element-ui --save # 或 yarn add element-ui 在…