Skip to content

Tree 树形选择 ​

基础用法 ​

  • 树形结构数据的选择与浏览组件,v-model 绑定选中节点 id 数组(String[])。
  • 两种选择模式:checkable 为 false 时点击行选中(选中行高亮背景 + 主色文字 + 左侧竖线),展开/收起靠点击展开箭头;checkable 为 true 时每行显示复选框,点击复选框选择、点击行展开/收起。
  • multiple 控制单选/多选(多选默认开启);cascade 级联模式下只保存叶子节点 id,父级复选框显示全选/半选状态,点击父级会选中/取消其下全部可选叶子。
  • 支持 lazy 异步节点:配合 loadData 逐层加载子级,展开时在展开箭头位置显示 loading。
  • 支持 prefix / suffix 插槽与节点级图标、旋转角度覆盖,样式可通过 externalStyle / externalClass 完全定制。
vue
<template>
	<sn-tree v-model="value" :data="data" checkable cascade :default-expanded-ids="['docs']"></sn-tree>
</template>

更多演示请下载 demo 查看

进阶用法 ​

异步加载 ​

vue
<template>
	<sn-tree v-model="value" :data="data" checkable cascade :load-data="loadData" @load-error="onLoadError"></sn-tree>
</template>
<script lang="uts" setup>
	function loadData(item: SnTreeItem, resolve: SnTreeLoadResolve, reject: SnTreeLoadReject): void {
		requestChildren(item.id).then((children: SnTreeData) => {
			resolve(children)
		}).catch(() => {
			reject()
		})
	}
</script>

属性 ​

参数说明类型默认值可选值
v-model选中节点 id 数组(cascade 模式下仅包含叶子节点 id)String[][]-
data树形数据源SnTreeData[]-
checkable是否显示复选框(false 时为行高亮选中)Booleanfalsetrue | false
multiple是否多选(false 时始终最多保留一个 id)Booleantruetrue | false
cascade是否级联选择(多选下父级显示全选/半选,值只存叶子 id)Booleanfalsetrue | false
selectable行是否可选中(false 且 checkable 为 false 时点击整行仅展开/收起)Booleantruetrue | false
disableParentSelection是否禁止选中父节点(开启后父节点不显示复选框)Booleanfalsetrue | false
defaultExpandedIds默认展开的节点 id 数组String[][]-
loadData异步加载子级数据的函数(item 为 lazy 节点,通过 resolve/reject 返回子级)SnTreeLoadDatanull-
icon展开开关图标名(收起态)Stringarrow-right-s-line-
activeIcon展开开关图标名(展开态)Stringarrow-right-s-line-
rotate展开时开关图标旋转角度(deg)Number90-
customStyle自定义根节点样式UTSJSONObject | String--
customClass自定义根节点外部样式类String--
itemStyle自定义节点行样式UTSJSONObject | String--
itemClass外部样式类String--
lineStyle自定义选中指示竖线样式UTSJSONObject | String--
lineClass外部样式类String--
arrowStyle自定义展开开关容器样式UTSJSONObject | String--
arrowClass外部样式类String--
checkboxStyle自定义复选框样式UTSJSONObject | String--
checkboxClass外部样式类String--
textStyle自定义节点文字样式UTSJSONObject | String--
textClass外部样式类String--
selectedTextStyle自定义选中节点文字样式UTSJSONObject | String--
selectedTextClass外部样式类String--

树形数据集合,即 sn-tree 的 data 属性类型。

类型说明
SnTreeItem[]树节点列表

懒加载回调类型:

类型签名
SnTreeLoadResolve(children: SnTreeData) => void
SnTreeLoadReject() => void
SnTreeLoadData(item: SnTreeItem, resolve: SnTreeLoadResolve, reject: SnTreeLoadReject) => void

sn-tree 的 load-data 属性接收 SnTreeLoadData 函数:懒加载节点展开时调用,加载成功经 resolve(children) 返回子节点,失败调用 reject()。


事件 ​

名称类型说明
change(value: String[], item: SnTreeItem) => Void选中值变化时触发,value 为最新 id 数组,item 为本次操作的节点
expand(item: SnTreeItem, expanded: Boolean) => Void节点展开/收起时触发
load-error(item: SnTreeItem) => Void异步加载子级失败时触发

树节点数据。

名称类型必填描述
idString是节点唯一 id
textString是节点显示文本
iconString否节点图标名
activeIconString否选中态图标名
rotateNumber否图标展开旋转角度(deg)
disabledBoolean否是否禁用节点
lazyBoolean否是否懒加载子节点(配合 load-data)
childrenSnTreeItem[]否子节点列表

树节点数据。

名称类型必填描述
idString是节点唯一 id
textString是节点显示文本
iconString否节点图标名
activeIconString否选中态图标名
rotateNumber否图标展开旋转角度(deg)
disabledBoolean否是否禁用节点
lazyBoolean否是否懒加载子节点(配合 load-data)
childrenSnTreeItem[]否子节点列表

方法 ​

名称参数返回值描述
expandid: String-展开指定节点
collapseid: String-收起指定节点

插槽 ​

名称说明作用域参数
prefix节点文字前插入自定义内容item: SnTreeItem
suffix节点文字后插入自定义内容item: SnTreeItem

类型 ​

SnTreeData ​

SnTreeItem[]:树形数据源。

SnTreeLoadData ​

(item: SnTreeItem, resolve: SnTreeLoadResolve, reject: SnTreeLoadReject) => Void:异步加载函数,resolve(children) 返回子级数据,reject() 表示加载失败。

使用 MIT 协议