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

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 属性实现:

elementui tree

<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 属性:

elementui tree

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

标签: elementuitree
分享给朋友:

相关文章

vue中实现tree

vue中实现tree

Vue 中实现 Tree 组件 在 Vue 中实现 Tree 组件可以通过递归组件或第三方库完成。以下是两种常见方法: 使用递归组件实现 Tree 递归组件是 Vue 中实现 Tree 结构的常见方…

elementui table

elementui table

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

elementui使用

elementui使用

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

elementui iview

elementui iview

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

elementui键盘

elementui键盘

Element UI 键盘事件处理 Element UI 是基于 Vue.js 的组件库,处理键盘事件通常结合 Vue 的原生事件绑定或自定义指令实现。 常用键盘事件绑定方式 在 Elemen…

elementui优秀

elementui优秀

优秀特性 Element UI 作为一款基于 Vue.js 的组件库,因其设计规范、易用性和丰富的功能而广受开发者青睐。 一致性设计 遵循统一的视觉风格和交互逻辑,提供开箱即用的主题定制能力,支…