Skip to content

Tree 树形控件

使用

用清晰的层级结构展示信息,可展开或折叠。

基础用法

基础的树形结构展示

可选择

适用于需要选择层级时使用。

本例还展示了动态加载节点数据的方法。

懒加载自定义叶子节点

由于在点击节点时才进行该层数据的获取,默认情况下 Tree 无法预知某个节点是否为叶子节点, 所以会为每个节点添加一个下拉按钮,如果节点没有下层数据,则点击后下拉按钮会消失。 同时,你也可以提前告知 Tree 某个节点是否为叶子节点,从而避免在叶子节点前渲染下拉按钮。

多次懒加载

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

禁用复选框

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

在示例中,通过 disabled 设置禁用状态。 相应的复选框已禁用,不能点击。

默认展开以及默认选中

树节点可以在初始化阶段被设置为展开和选中。

分别通过 default-expanded-keysdefault-checked-keys 设置默认展开和默认选中的节点。 需要注意的是,此时必须设置 node-key, 其值为节点数据中的一个字段名,该字段在整棵树中是唯一的。

树节点的选择

本例展示如何获取和设置选中节点。 获取和设置各有两种方式:通过 node 或通过 key。 如果需要通过 key 来获取或设置,则必须设置 node-key

自定义节点内容

节点的内容支持自定义,可以在节点区添加按钮或图标等内容

可以通过两种方法进行树节点内容的自定义:render-contentscoped slot。 使用 render-content 指定渲染函数,该函数返回需要的节点区内容即可。 渲染函数的用法请参考 Vue 文档。 使用 scoped slot 会传入两个参数 nodedata,分别表示当前节点的 Node 对象和当前节点的数据。 注意:由于 JSFiddle 不支持 JSX 语法,所以 render-content 示例无法在那里运行。 但是在实际的项目中,只要正确地配置了相关依赖,就可以正常运行。

自定义节点类名

节点的类名支持自定义。

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

树节点过滤

树节点是可以被过滤的

调用 Tree 实例对象的 filter 方法来过滤树节点。 方法的参数就是过滤关键字。 需要注意的是,此时需要设置 filter-node-method 属性,其值为过滤函数。

手风琴模式

对于同一级的节点,每次只能展开一个

可拖拽节点

通过 draggable 属性可让节点变为可拖拽

自定义节点图标

通过iconexpand-iconcollapse-icon属性分别可以自定义叶子节点、展开节点、收起节点的图标。 如果有更复杂的需求场景,可以使用 icon-method 属性更灵活的自定义节点图标。该方法接受两个参数,分别是当前数据项以及当前节点,返回值可以返回一个图标名称或者图标组件,也可以返回一个对象,包含 icon 属性和 css 样式属性。

自定义叶子结点/展开结点/收起结点图标

使用 icon-method 属性自定义节点图标

API

Props

参数名描述类型默认值
data展示数据object-
empty-text内容为空的时候展示的文本string-
node-key每个树节点用来作为唯一标识的属性,整棵树应该是唯一的string-
props配置选项,具体看下表object-
render-after-expand是否在第一次展开某个树节点后才渲染其子节点booleantrue
load加载子树数据的方法,仅当 lazy 属性为true 时生效Function-
render-content树节点的内容区的渲染Function-
highlight-current是否高亮当前选中节点,默认值是 false。booleanfalse
default-expand-all是否默认展开所有节点booleanfalse
expand-on-click-node是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。booleantrue
check-on-click-node是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点。booleanfalse
auto-expand-parent展开子节点的时候是否自动展开父节点booleantrue
default-expanded-keys默认展开的节点的 key 的数组object-
show-checkbox节点是否可被选择booleanfalse
check-strictly在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 falsebooleanfalse
default-checked-keys默认勾选的节点的 key 的数组object-
current-node-key当前选中的节点string / number-
filter-node-method对树节点进行筛选时执行的方法, 返回 false 则表示这个节点会被隐藏Function-
accordion是否每次只打开一个同级树节点展开booleanfalse
indent相邻级节点间的水平缩进,单位为像素number18
icon自定义叶子节点图标组件string / Component-
expand-icon自定义展开节点图标组件string / Component-
collapse-icon自定义关闭节点图标组件string / Component-
show-arrow自定义是否显示隐藏节点箭头booleantrue
lazy是否懒加载子节点,需与 load 方法结合使用booleanfalse
draggable是否开启拖拽节点功能booleanfalse
allow-drag判断节点能否被拖拽 如果返回 false ,节点不能被拖动Function-
allow-drop拖拽时判定目标节点能否成为拖动目标位置。 如果返回 false ,拖动节点不能被拖放到目标节点。 type 参数有三种情况:'prev'、'inner' 和 'next',分别表示放置在目标节点前、插入至目标节点和放置在目标节点后Function-
icon-method 自定义节点图标Function-

Events

事件名描述类型
node-click当节点被点击时触发Function
node-contextmenu当某一节点被右键点击时触发Function
check-change当复选框状态发生变化时触发Function
check点击节点复选框时触发Function
current-change当当前选中的节点发生变化时触发Function
node-expand当节点被展开时触发Function
node-collapse当节点被收起时触发Function
node-drag-start当节点开始拖拽时触发Function
node-drag-enter当拖拽节点进入其他节点时触发Function
node-drag-leave当拖拽节点离开某个节点时触发Function
node-drag-over在拖拽节点时触发Function
node-drag-end拖拽结束时触发,可能未成功完成Function
node-drop拖拽成功完成时触发Function

TreeOptionProps

参数名描述类型默认值
label指定节点标签为节点对象的某个属性值string | Function-
children指定子树为节点对象的某个属性值string-
disabled指定节点选择框是否禁用为节点对象的某个属性值string | Function-
isLeaf指定节点是否为叶子节点,仅在指定了 lazy 属性的情况下生效string | Function-
class自定义节点类名string | Function-

Methods

方法名描述类型
filter过滤所有树节点,过滤后的节点将被隐藏Function
updateKeyChildren为节点设置新数据,只有当设置 node-key 属性的时候才可用Function
getCheckedNodes如果节点可以被选中,(show-checkbox 为 true), 本方法将返回当前选中节点的数组Function
setCheckedNodes设置目前勾选的节点,使用此方法必须提前设置 node-key 属性Function
getCheckedKeys若节点可用被选中 (show-checkbox 为 true), 它将返回当前选中节点 key 的数组Function
setCheckedKeys设置目前选中的节点,使用此方法必须设置 node-key 属性Function
setChecked设置节点是否被选中, 使用此方法必须设置 node-key 属性Function
getHalfCheckedNodes如果节点可用被选中 (show-checkbox 为 true), 它将返回当前半选中的节点组成的数组Function
getHalfCheckedKeys若节点可被选中(show-checkbox 为 true),则返回目前半选中的节点的 key 所组成的数组Function
getCurrentKey返回当前被选中节点的数据 (如果没有则返回 null)Function
getCurrentNode返回当前被选中节点的数据 (如果没有则返回 null)Function
setCurrentKey通过 key 设置某个节点的当前选中状态,使用此方法必须设置 node-key 属性Function
setCurrentNode设置节点为选中状态,使用此方法必须设置 node-key 属性Function
getNode根据 data 或者 key 拿到 Tree 组件中的 nodeFunction
remove删除 Tree 中的一个节点,使用此方法必须设置 node-key 属性Function
append为 Tree 中的一个节点追加一个子节点Function
insertBefore在 Tree 中给定节点前插入一个节点Function
insertAfter在 Tree 中给定节点后插入一个节点Function

Slots

插槽名描述参数
default自定义树节点的内容, 自定义树节点的内容-
empty当数据为空时自定义的内容-