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

elementui tree

2026-01-15 20:20:50前端教程

ElementUI Tree 组件

ElementUI 的 Tree 组件是一个基于 Vue.js 的树形控件,用于展示层级数据。它支持节点的展开、折叠、选择、懒加载等功能,适用于文件目录、组织架构等场景。

基本用法

Tree 组件的基本用法是通过 data 属性传入树形数据,每个节点需要包含 labelchildren 属性:

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

对应的数据格式如下:

data: [{
  label: '一级 1',
  children: [{
    label: '二级 1-1',
    children: [{
      label: '三级 1-1-1'
    }]
  }]
}]

节点选择

Tree 组件支持单选和多选模式。通过 show-checkbox 属性可以开启多选:

<el-tree :data="data" show-checkbox></el-tree>

懒加载

对于大数据量的树形结构,可以使用懒加载来优化性能。通过 lazyload 属性实现:

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

对应的 JavaScript 代码:

props: {
  label: 'name',
  children: 'zones'
},
loadNode(node, resolve) {
  if (node.level === 0) {
    return resolve([{ name: 'region' }]);
  }
  if (node.level > 1) return resolve([]);
  setTimeout(() => {
    const data = [{
      name: 'leaf',
      leaf: true
    }, {
      name: 'zone'
    }];
    resolve(data);
  }, 500);
}

自定义节点内容

可以通过 scoped slot 自定义节点的内容:

<el-tree :data="data">
  <span slot-scope="{ node, data }" class="custom-tree-node">
    <span>{{ node.label }}</span>
    <span>
      <el-button type="text" size="mini" @click="append(data)">添加</el-button>
    </span>
  </span>
</el-tree>

节点过滤

Tree 组件支持通过关键字过滤节点,使用 filter-node-method 属性:

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

对应的 JavaScript 代码:

filterText: '',
watch: {
  filterText(val) {
    this.$refs.tree.filter(val);
  }
},
filterNode(value, data) {
  if (!value) return true;
  return data.label.indexOf(value) !== -1;
}

节点操作

Tree 组件提供了一系列方法用于操作节点,例如 getCheckedNodesgetCheckedKeyssetCheckedNodes 等:

// 获取选中的节点
this.$refs.tree.getCheckedNodes()
// 获取选中的节点 key
this.$refs.tree.getCheckedKeys()
// 设置选中的节点
this.$refs.tree.setCheckedNodes(nodes)

事件

Tree 组件提供了多个事件,例如 node-clickcheck-changenode-expand 等:

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

对应的 JavaScript 代码:

elementui tree

handleNodeClick(data, node, component) {
  console.log(data, node, component);
},
handleCheckChange(data, checked, indeterminate) {
  console.log(data, checked, indeterminate);
}

总结

ElementUI 的 Tree 组件功能强大且灵活,适用于各种树形结构的数据展示和操作。通过合理配置属性和方法,可以实现复杂的树形交互需求。

标签: elementuitree
分享给朋友:

相关文章

elementui iview

elementui iview

Element UI 和 iView 对比 Element UI 和 iView 都是基于 Vue.js 的 UI 组件库,广泛应用于企业级中后台系统的开发。以下是两者的主要特点和差异: Eleme…

面试elementui

面试elementui

面试准备:ElementUI 核心知识点 基础组件与用法 熟悉常用组件如 el-button、el-form、el-table、el-dialog 的使用场景和配置项。例如表单验证需结合 rules…

elementui flex

elementui flex

以下是关于 Element UI 中 Flex 布局的详细说明和使用方法: Flex 布局基础 Element UI 的 Flex 布局基于 CSS Flexbox 模型,通过 el-row 和 e…

搭建elementui

搭建elementui

安装Element UI Element UI是一个基于Vue.js的组件库,适用于快速开发前端界面。在Vue项目中安装Element UI需要确保项目已初始化并安装了Vue.js。 使用npm安装…

elementui标志

elementui标志

Element UI 的标志 Element UI 的标志通常由以下元素组成: 一个简洁的字母 "E" 设计,带有现代感和科技感 配色以蓝色为主,符合其技术类 UI 框架的定位 标志整体风格简约,体…

elementui formdata

elementui formdata

使用 ElementUI 上传文件时处理 FormData ElementUI 的 el-upload 组件常用于文件上传,结合 FormData 可以方便地处理文件数据。以下是实现方法: 创建 F…