Tree 树形控件

用清晰的层级结构展示信息。

基础用法

基础的树形结构。

可选

用于节点选择。

该示例还展示了如何异步加载节点数据。

警告

当使用 show-checkbox 时,由于 `check-on-click-leaf` 默认为 true,可以通过点击最后的子节点来选中它们。

懒加载自定义叶子节点

在懒加载模式下,节点数据只有在点击时才进行获取,因此 Tree 组件无法预先判断该节点是否为叶子节点。 这就是为什么每个节点都会添加一个下拉按钮,如果它是一个叶子节点,则在点击后下拉按钮会消失。 话虽如此,您也可以提前告知 Tree 组件该节点是否为叶子节点,从而避免在叶子节点前渲染下拉按钮。

懒加载失败重试 2.6.3

当远程懒加载节点数据时,懒加载有时可能会失败。 在这种情况下,您可以调用 reject 来保持节点状态不变,并允许远程加载继续。

禁用复选框

节点的复选框可以被设置为禁用。

在示例中,'disabled' 属性在 defaultProps 中声明,并且某些节点被设置为 'disabled:true'。 相应的复选框被禁用,无法点击。

默认展开和默认选中

树节点可以初始展开或选中

使用 `default-expanded-keys` 和 `default-checked-keys` 来分别设置默认展开和默认选中的节点。 请注意,要使它们起作用,`node-key` 是必需的。 它的值是数据对象中一个键的名称,并且该键的值在整个树中应该是唯一的。

一级 2
一级 3

选中树节点

本例展示了如何获取和设置选中节点。 它们都可以通过两种方法完成:节点和键。 如果您使用键方法,则需要 `node-key`。

一级 1
二级 1-1
三级 1-1-1
三级 1-1-2
一级 2
二级 2-1
二级 2-2
一级 3
二级 3-1
二级 3-2

自定义节点内容

树节点的内容可以自定义,因此您可以随心所欲地添加图标或按钮

自定义树节点模板有两种方法:`render-content` 和作用域插槽。 使用 `render-content` 来分配一个返回树节点内容的渲染函数。 有关渲染函数的详细介绍,请参阅 Vue 的文档。 如果您更喜欢作用域插槽,您将可以在作用域中访问 `node` 和 `data`,分别代表当前节点的 TreeNode 对象和节点数据。 请注意,`render-content` 演示无法在 JSFiddle 中运行,因为它不支持 JSX 语法。 在实际项目中,如果相关依赖项配置正确,`render-content` 将会起作用。

使用 render-content

一级 1
二级 1-1
三级 1-1-1
三级 1-1-2
一级 2
二级 2-1
二级 2-2
一级 3
二级 3-1
二级 3-2

使用作用域插槽

一级 1
二级 1-1
三级 1-1-1
三级 1-1-2
一级 2
二级 2-1
二级 2-2
一级 3
二级 3-1
二级 3-2

自定义节点类名

树节点的类可以自定义

使用 `props.class` 来构建节点的类名。

一级 1
二级 1-1
三级 1-1-1
三级 1-1-2
一级 2
二级 2-1
二级 2-2
一级 3
二级 3-1
二级 3-2

树节点过滤

可以对树节点进行过滤

调用 Tree 实例的 `filter` 方法来过滤树节点。 它的参数是过滤关键字。 请注意,要使其起作用,需要 `filter-node-method`,它的值是过滤方法。

一级 1
二级 1-1
三级 1-1-1
三级 1-1-2
一级 2
二级 2-1
二级 2-2
一级 3
二级 3-1
二级 3-2

手风琴

同一级别的节点一次只能展开一个。

可拖拽

通过添加 `draggable` 属性,您可以拖放树节点。

一级 1
二级 1-1
三级 1-1-1
一级 2
二级 2-1
三级 2-1-1
二级 2-2
三级 2-2-1
一级 3
二级 3-1
三级 3-1-1
二级 3-2
三级 3-2-1

属性

名称描述类型默认值
data树数据object
empty-text数据为空时显示的文本string
node-key节点的唯一标识键名,其值在整个树中应唯一string
props配置选项,请参见下表object
render-after-expand是否在父节点第一次展开后才渲染其子节点booleantrue
load加载子树数据的方法,仅在 `lazy` 为 true 时有效Function
render-content树节点的渲染函数Function
highlight-current是否高亮当前节点booleanfalse
default-expand-all是否默认展开所有节点booleanfalse
expand-on-click-node是否在点击节点时展开或折叠节点,如果为 false,则仅在点击箭头图标时展开或折叠节点。booleantrue
check-on-click-node是否在点击节点时选中或取消选中节点,如果为 false,则只能通过点击复选框来选中或取消选中节点。booleanfalse
check-on-click-leaf 2.9.6是否在点击叶子节点(最后的子节点)时选中或取消选中节点。booleantrue
auto-expand-parent展开子节点的时候是否自动展开父节点booleantrue
default-expanded-keys初始展开节点的键数组object
show-checkbox节点是否可选booleanfalse
check-strictly当 `show-checkbox` 为 `true` 时,节点的选中状态是否不影响其父节点和子节点booleanfalse
default-checked-keys初始选中节点的键数组object
current-node-key初始选中节点的键string / number
filter-node-method使用过滤方法时,此函数将在每个节点上执行。如果返回 `false`,树节点将被隐藏。Function
accordion是否每次只打开一个同级树节点booleanfalse
indent相邻层级节点之间的水平缩进(以像素为单位)number18
icon自定义树节点图标组件string / Component
lazy是否懒加载叶子节点,与 `load` 属性一起使用booleanfalse
draggable是否开启拖拽节点功能booleanfalse
allow-drag判断节点能否被拖拽。在拖拽一个节点之前执行。如果返回 `false`,节点将无法被拖拽Function
allow-drop在拖拽节点放下之前执行。如果返回 `false`,则拖拽节点不能被放到目标节点。`type` 有三个可能的值:'prev' (将拖拽节点插入到目标节点之前)、'inner' (将拖拽节点插入到目标节点中) 和 'next' (将拖拽节点插入到目标节点之后)Function

props

属性描述类型默认值
label指定节点对象的哪个键用作节点的标签string / Function
children指定哪个节点对象用作节点的子树string
disabled指定节点对象的哪个键表示节点的复选框是否被禁用string / Function
isLeaf指定节点是否为叶子节点,仅在懒加载启用时有效string / Function
class自定义节点类名string / Function

方法

`Tree` 有以下方法,它返回当前选中的节点数组。

方法描述参数
filter过滤所有树节点,被过滤的节点将被隐藏接受一个参数,该参数将作为 filter-node-method 的第一个参数
updateKeyChildren为节点设置新数据,仅在指定了 `node-key` 时有效(key, data) 接受两个参数:1. 节点的 key 2. 新数据
getCheckedNodes如果节点可选(`show-checkbox` 为 `true`),则返回当前选中的节点数组(leafOnly, includeHalfChecked) 接受两个布尔类型参数:1. 默认值为 `false`。如果参数为 `true`,它只返回当前选中的子节点数组。 2. 默认值为 `false`。如果参数为 `true`,返回值将包含半选中的节点
setCheckedNodes设置某些节点为选中状态,仅在指定了 `node-key` 时有效一个待选中的节点数组
getCheckedKeys如果节点可选(`show-checkbox` 为 `true`),则返回当前选中的节点键数组(leafOnly) 接受一个布尔类型参数,其默认值为 `false`。如果参数为 `true`,则只返回当前选中的子节点数组。
setCheckedKeys设置某些节点为选中状态,仅在指定了 `node-key` 时有效(keys, leafOnly) 接受两个参数:1. 一个待选中节点的 key 数组 2. 一个布尔参数。如果设置为 `true`,则只会设置叶子节点的选中状态。默认值为 `false`。
setChecked设置节点为选中或非选中状态,仅在指定了 `node-key` 时有效(key/data, checked, deep) 接受三个参数:1. 待选中节点的 key 或 data 2. 一个布尔类型参数,表示选中或非选中。 3. 一个布尔类型参数,表示是否深度选中。
getHalfCheckedNodes如果节点可选(`show-checkbox` 为 `true`),则返回当前半选中的节点数组
getHalfCheckedKeys如果节点可选(`show-checkbox` 为 `true`),则返回当前半选中的节点键数组
getCurrentKey返回高亮节点的 key (如果没有节点高亮则为 null)
getCurrentNode返回高亮节点的数据 (如果没有节点高亮则为 null)
setCurrentKey通过 key 设置高亮节点,仅在指定了 `node-key` 时有效(key, shouldAutoExpandParent=true) 1. 待高亮节点的 key。如果为 `null`,则取消当前高亮的节点 2. 是否自动展开父节点
setCurrentNode设置高亮节点,仅在指定了 `node-key` 时有效(node, shouldAutoExpandParent=true) 1. 待高亮的节点 2. 是否自动展开父节点
getNode通过数据或 key 获取节点(data) 节点的数据或 key
remove移除一个节点,仅在指定了 node-key 时有效(data) 待删除节点的数据或节点
append向树中的给定节点追加一个子节点(data, parentNode) 1. 待追加的子节点数据 2. 父节点的数据、key 或节点
insertBefore在树中的给定节点之前插入一个节点(data, refNode) 1. 待插入的节点数据 2. 参考节点的数据、key 或节点
insertAfter在树中的给定节点之后插入一个节点(data, refNode) 1. 待插入的节点数据 2. 参考节点的数据、key 或节点

事件

名称描述参数
node-click当节点被点击时触发四个参数:对应于点击节点的节点对象、TreeNode 的 `node` 属性、TreeNode 本身、事件对象
node-contextmenu当节点被右键点击时触发四个参数:事件、对应于点击节点的节点对象、TreeNode 的 `node` 属性、TreeNode 本身
check-change当节点的选中状态改变时触发三个参数:对应于其选中状态改变的节点的节点对象、节点是否被选中、节点的子树是否有选中节点
check点击节点的复选框后触发两个参数:对应于被选中/取消选中的节点的节点对象、树的选中状态对象,该对象有四个属性:checkedNodes, checkedKeys, halfCheckedNodes, halfCheckedKeys
current-change当前节点改变时触发两个参数:对应于当前节点的节点对象、TreeNode 的 `node` 属性
node-expand当前节点打开时触发三个参数:对应于展开的节点的节点对象、TreeNode 的 `node` 属性、TreeNode 本身
node-collapse当前节点关闭时触发三个参数:对应于关闭的节点的节点对象、TreeNode 的 `node` 属性、TreeNode 本身
node-drag-start拖拽开始时触发两个参数:对应于拖拽节点的节点对象、事件。
node-drag-enter拖拽节点进入另一个节点时触发三个参数:对应于拖拽节点的节点对象、对应于进入节点的节点对象、事件。
node-drag-leave拖拽节点离开一个节点时触发三个参数:对应于拖拽节点的节点对象、对应于离开节点的节点对象、事件。
node-drag-over在节点上拖拽时触发 (类似于 mouseover 事件)三个参数:对应于拖拽节点的节点对象、对应于拖拽经过的节点的节点对象、事件。
node-drag-end拖拽结束时触发四个参数:对应于拖拽节点的节点对象、对应于拖拽结束节点的节点对象 (可能为 `undefined`)、节点放置类型 (before / after / inner)、事件。
node-drop拖拽节点放下后触发四个参数:对应于拖拽节点的节点对象、对应于放置节点的节点对象、节点放置类型 (before / after / inner)、事件。

插槽

名称描述
树节点的自定义内容。作用域参数为 `{ node, data }`
empty 2.3.4空状态,您可以自定义数据为空时的内容。

来源

组件样式文档

贡献者