基础用法

可以设置类似的data数据格式来生成树形组织图,并可以通过style精确配置每个节点的样式或className精确配置每个节点的class名

注:
1.如果需要拖动节点,或新增、编辑和删除节点功能,则节点必须有id(节点唯一标识)和pid(父级节点唯一标识)属性
或者通过props指定id和pid属性
2.由于节点拖拽功能阻止了节点文本选中,所以,在右键菜单中提供了复制节点文本功能。

基础示例

自定义节点

节点和展开按钮支持自定义 使用defaultexpand插槽自定义字之书节点和展开按钮渲染内容 也可以通过renderContent 自定义节点渲染内容 使用renderContent指定渲染函数,该函数返回需要的节点区内容即可。 渲染函数的用法请参考 Vue 文档

TIP

插槽优先级大于renderContent

自定义右键菜单

节点右键菜单支持自定义 使用define-menus属性可以自定义右键菜单,接受包含name-菜单名称和command-事件指令属性的对象数组

TIP

可通过on-contextmenu事件定义右键菜单执行事件
command相同则执行事件相同,应避免重复

组织树搜索

通过关键字过滤组织树节点

懒加载子节点

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

TIP

启用懒加载之后,默认展开层级(default-expand-level)、默认展开节点数组(default-expand-keys)和工具栏全部展开按钮可能表现异常,应尽量避免使用

Attributes

参数说明类型可选值默认值
data数据源,必须传入Object
center是否水平居中Booleanfalse
props配置选项,具体看下表Object{id: 'id', pid: 'pid', label: 'label', expand: 'expand',children: 'children' }
toolBar工具栏[Object, Boolean]{scale: true, restore: true, expand: true, zoom: true, fullscreen: true, }
horizontal是否是横向Booleantrue,falsefalse
collapsable是否可以展开收起节点Booleantrue,falsefalse
filter-node-method对树节点进行筛选时执行的方法,返回 true 表示这个节点可以显示,返回 false 则表示这个节点会被隐藏Function(value, data)————
default-expand-level默认展开层级(如果层级内有节点展开属性值为false,该节点不会默认展开)Number————
default-expand-keys默认展开的节点的 key 的数组Array————
disabled禁止编辑,设为true后,所有节点不可新增下级、编辑和删除,单个节点禁止编辑,可将节点属性设置disabled为trueBooleantrue,falsetrue
scalable架构图是否可缩放Booleantrue,falsetrue
draggable架构图是否可拖拽,单个节点禁止拖拽,可将节点属性设置noDragging为trueBooleantrue,falsetrue
draggable-on-node架构图拖拽在节点触发,node-draggable值为false时,设为true才有效Booleantrue,falsefalse
node-draggable节点是否可拖拽Booleantrue,falsetrue
clone-node-drag是否拷贝节点拖拽Booleantrue,falsetrue
only-one-node是否仅拖动当前节点,如果true,仅拖动当前节点,子节点自动添加到当前节点父节点,如果false,则当前节点及子节点一起拖动Booleantrue,falsetrue
node-drag-start节点拖拽开始(参数当前节点node),4.0版本后将废弃此属性,改为on-node-drag-start事件Function
node-draging节点拖拽(参数当前节点node),4.0版本后将废弃此属性,改为on-node-drag事件Function
before-drag-end节点拖拽结束前钩子(参数当前节点node, 目标节点targetNode),若返回 false 或者返回 Promise 且被 reject,则阻止节点拖拽Function
node-drag-end节点拖拽结束(参数当前节点node, 判断当前节点和目标节点是否同一节点isSelf),4.0版本后将废弃此属性,改为on-node-drag-end事件Function
lazy是否懒加载子节点,需与 load 方法结合使用,4.1版本新增boolean
load加载子树数据的方法,仅当 lazy 属性为true 时生效,4.1版本新增Function(node, resolve)false
node-add自定义节点新增,覆盖默认新增行为(参数当前节点node)Function
node-delete自定义节点删除,覆盖默认新增行为(参数当前节点node)Function
node-edit自定义节点编辑,覆盖默认新增行为(参数当前节点node)Function
node-copy复制节点文本,覆盖默认复制节点文本行为(参数当前节点node)Function
define-menus自定义右键菜单,接受包含name和command属性的对象数组,或者一个返回值为包含name和command属性的对象数组的函数(参数MouseEvent和node)Array, Function[{ name: '复制文本', command: 'copy' },{ name: '新增节点', command: 'add' },{ name: '编辑节点', command: 'edit' },{ name: '删除节点', command: 'delete' }]
render-content渲染函数Function
label-style自定义label标签的样式Object
label-class-name自定义label节点的样式名[Function, String]
selected-key选中的节点id 或 选中节点id的数组[Array, Number, String]
selected-class-name自定义选择节点的样式名[Function, String]
click-delay单机事件延迟(毫秒),解决双击鼠标时同时触发单击事件问题Number260
注:
1.如果需要拖动节点,或新增、编辑和删除节点功能,则节点必须有id(节点唯一标识)和pid(父级节点唯一标识)属性
或者通过props指定id和pid属性
2.由于节点拖拽功能阻止了节点文本选中,所以,在右键菜单中提供了复制节点文本功能。

Props

参数说明类型可选值默认值
label指定节点标签为节点对象的某个属性值String
children指定子树为节点对象的某个属性值String
id指定节点唯一标识为节点对象的某个属性值String
pid指定父级节点唯一标识为节点对象的某个属性值String
expand指定节点是否展开为节点对象的某个属性值String
isLeaf指定节点对象的某个key用于判断是否叶子节点(该key对应的value应为boolean类型)String

Events

事件名说明返回值
on-expand节点展开事件,注意,展开节点时如监听了label点击事件,则需要阻止冒泡 e.stopPropagation()e, data
on-expand-all全部展开/收起事件boolean
on-node-click节点点击事件e, data
on-node-dblclick节点双击事件e, data
on-node-focus节点获取焦点事件e, data
on-node-blur节点失去焦点事件e, data
on-node-copy复制节点文本事件,如果设置了node-copy属性,此事件将不会执行复制的文本
on-node-delete删除节点事件,如果设置了node-delete属性,此事件将不会执行删除的节点
on-node-drag-start节点拖拽开始事件,4.0版本后新增,代替原node-drag-start属性node
on-node-drag节点拖拽事件,4.0版本后新增,代替原node-draging属性node
on-node-drag-end节点拖拽结束事件,4.0版本后新增,代替原node-drag-end属性node, targetNode
on-contextmenu右键菜单点击事件{command, node}
on-zoom缩放事件scale缩放倍数
on-drag拖拽事件x, y
on-drag-stop拖拽结束事件x, y

Methods

事件名说明返回值
filter对树节点进行筛选操作接收一个任意类型的参数,该参数会在 filter-node-method 中作为第一个参数
getExpandKeys获取当前展开的key数组返回节点的 key 的数组
setExpandKeys设置展开的key数组,接收节点的 key 的数组作为参数

Slot

name说明
自定义节点内容,参数为 { node }
expand自定义节点展开按钮内容,参数为 { node }
Last Updated:
Contributors: sangtian152