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

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 代码:

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

总结

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

elementui tree

标签: elementuitree
分享给朋友:

相关文章

elementui中文网

elementui中文网

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

elementui获取input的值

elementui获取input的值

获取 input 值的常用方法 在 Element UI 中,可以通过 v-model 双向绑定或 ref 引用的方式获取 input 组件的值。 使用 v-model 双向绑定 <…

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 在…

elementui组件

elementui组件

ElementUI 组件概述 ElementUI 是一套基于 Vue.js 的桌面端组件库,提供丰富的 UI 组件,适用于快速开发中后台系统。以下是其核心组件分类及典型用法。 基础组件 Butto…

elementui vue2

elementui vue2

使用 Element UI 与 Vue 2 的指南 Element UI 是一个基于 Vue 2 的组件库,专为开发者、设计师和产品经理设计,提供丰富的组件和交互方式。 安装 Element UI…