Tree 树
树组件,用于创建一个树形结构,支持配置选择模式、选中的节点ID、折叠的节点ID、树数据、父节点项、父节点ID、树类型、是否开启手风琴模式、加载函数、是否显示复选框、是否懒加载、是否显示编辑按钮、是否显示删除按钮等。
示例
vue
<template>
<t-page title='Tree-基础功能' class="p.30">
<t-card title="Tree 树" class="mb.30" sub-title="功能强大,多级节点展开、折叠、选择、懒加载,支持插槽灵活布局,并具有丰富的样式定制和事件响应能力"></t-card>
<t-row class="tdr-tdb-h.100-faic-plr.15-mb.20">
<t-text>当前选中:{{selects.join(',')}}</t-text>
</t-row>
<t-col class="tdr-tdb-p.20-mb.20">
<t-tree :list='list' @change="onchange" :selectIds="['9','11','5']" :showEditButton="true" @edit="edit"
@delete="trash" :showDeleteButton="true">
<!-- 以下为右侧按钮插槽用法 -->
<!-- <template v-slot:right="{item}">
<t-row>
<t-icon :stop="true" name='edit-pen' class="s.38-mr.15" :hover="true"
@click="edit(item as TuiTreeData)" type="success"></t-icon>
<t-icon :stop="true" name='trash' :hover="true" type="error" class="s.38"></t-icon>
</t-row>
</template> -->
</t-tree>
</t-col>
<t-button class="mb.20" type='p' @click="goto('tree-select')">可选择</t-button>
<t-button class="mb.20" type='s' @click="goto('tree-accordion')">手风琴模式</t-button>
<t-button class="mb.20" type='e' @click="goto('tree-lazy')">懒加载</t-button>
</t-page>
</template>
<script>
import { TuiTreeData } from '@/uni_modules/t-ui'
export default {
data() {
return {
selects: [] as string[],
list: [{
id: '1',
label: '一级 1',
children: [{
id: '4',
label: '二级 1-1',
children: [{
id: '9',
label: '三级 1-1-1',
disabled: true,
children: [{
id: '11',
label: '四级 1-1-1',
}]
}, {
id: '12',
label: '三级 1-1-1',
children: [{
id: '13',
label: '四级 1-1-1',
}]
}, {
id: '10',
label: '三级 1-1-2'
}]
}]
}, {
id: '2',
label: '一级 2',
children: [{
id: '5',
label: '二级 2-1',
disabled: true
}, {
id: '6',
label: '二级 2-2'
}]
}, {
id: '3',
label: '一级 3',
children: [{
id: '7',
label: '二级 3-1'
}, {
id: '8',
label: '二级 3-2'
}]
}] as TuiTreeData[]
}
},
methods: {
trash(item : TuiTreeData, callback : () => void) {
uni.showModal({
title: '提示',
content: `确认删除${item.label}吗?`,
success: function (res) {
if (res.confirm) {
callback()
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
edit(item : TuiTreeData) {
uni.showModal({
title: `id:${item.id},${item.label}`,
})
},
goto(path : string) {
uni.navigateTo({
url: '/pages/component/layout/tree/' + path
})
},
onchange(e : string[]) {
this.selects = []
this.selects = e
}
}
}
</script>
<style lang="scss">
</style>
支持平台
安卓 | ios | web | 微信小程序 | 支付宝小程序 | QQ小程序 |
---|---|---|---|---|---|
√ | √ | √ | x | x | x |
Props
名称 | 描述 | 类型 | 默认值 | 可选值 |
---|---|---|---|---|
selectionMode | 选择模式 | String | 'multiple' | 'multiple', 'radio' |
selectIds | 选中的节点ID | String[] | [] | - |
foldIds | 折叠的节点ID | String[] | [] | - |
list | 树数据 | TuiTreeData[] | [] | - |
partenItem | 父节点项 | TuiTreeData | null | - |
partenId | 父节点ID | String | '0' | - |
type | 树类型 | String | 'p' | 'p', 'c' |
accordion | 是否开启手风琴模式 | Boolean | false | - |
load | 加载函数 | Function | () => TuiTreeData[] | - |
showCheckbox | 是否显示复选框 | Boolean | false | - |
lazy | 是否懒加载 | Boolean | false | - |
showEditButton | 是否显示编辑按钮 | Boolean | false | - |
showDeleteButton | 是否显示删除按钮 | Boolean | false | - |
Events
事件名 | 描述 | 回调参数 | 版本 |
---|---|---|---|
change | 当选中项发生变化时触发 | expandIds | - |
click | 当点击节点时触发 | item | - |
edit | 当点击编辑按钮时触发 | item | - |
delete | 当点击删除按钮时触发 | item, callback | - |
Slots
名称 | 描述 |
---|---|
right | 右侧插槽,用于自定义操作按钮等 |