TreeSelect 树选择

树型选择控件。

何时使用

类似 Select 的选择控件,可选择的数据结构是一个树形结构时,可以使用 TreeSelect,例如公司层级、学科系统、分类目录等等。

代码演示

基本

最简单的用法。

  1. <template>
  2. <v-tree-select :data="treeData1" allow-clear style="width:300px" @select="onSelect" @clear="onClear"></v-tree-select>
  3. </template>
  4. <script>
  5. export default {
  6. data() {
  7. return {
  8. treeData1: [{
  9. title: 'parent 1',
  10. expanded: true,
  11. children: [{
  12. title: 'parent 1-0',
  13. expanded: true,
  14. children: [{
  15. title: 'my leaf',
  16. }, {
  17. title: 'your leaf',
  18. }]
  19. }, {
  20. title: 'parent 1-1',
  21. children: [{
  22. title: "<span style='color: #08c'>sss</span>"
  23. }]
  24. }]
  25. }],
  26. }
  27. },
  28. methods: {
  29. onSelect(data) {
  30. console.log(data);
  31. },
  32. onClear(data) {
  33. console.log('clear', data);
  34. }
  35. }
  36. }
  37. </script>

可勾选

使用勾选框实现多选功能。

  1. <template>
  2. <v-tree-select :data="treeData2" allow-clear multiple style="width:300px" @check="onCheck" @clear="onClear"></v-tree-select>
  3. </template>
  4. <script>
  5. export default {
  6. data() {
  7. return {
  8. treeData2: [{
  9. title: 'parent 1',
  10. expanded: true,
  11. children: [{
  12. title: 'parent 1-0',
  13. expanded: true,
  14. children: [{
  15. title: 'my leaf',
  16. }, {
  17. title: 'your leaf',
  18. }, {
  19. title: 'self leaf',
  20. }]
  21. }, {
  22. title: 'parent 1-1',
  23. children: [{
  24. title: "<span style='color: #08c'>sss</span>"
  25. }]
  26. }, {
  27. title: 'parent 1-2',
  28. }]
  29. }],
  30. }
  31. },
  32. methods: {
  33. onCheck(data) {
  34. console.log(data)
  35. },
  36. onClear(data) {
  37. console.log('clear', data);
  38. }
  39. }
  40. }
  41. </script>

异步加载数据

点击展开节点,动态加载数据。

  1. <template>
  2. <v-tree-select :data="asyncData" allow-clear style="width:300px" :async="getData"></v-tree-select>
  3. </template>
  4. <script>
  5. export default {
  6. data() {
  7. return {
  8. asyncData: [
  9. { title: 'pNode 01', children: []},
  10. { title: 'pNode 02', children: []},
  11. { title: 'pNode 03'},
  12. ]
  13. }
  14. },
  15. methods: {
  16. getData(node) {
  17. console.log(node);
  18. return new Promise(resolve => {
  19. setTimeout(()=>{
  20. resolve([
  21. { title: `leaf ${node.clue}-0`, children: []},
  22. { title: `leaf ${node.clue}-1`},
  23. { title: `leaf ${node.clue}-2`},
  24. ])
  25. }, 1000)
  26. })
  27. },
  28. }
  29. }
  30. </script>

API

TreeSelect Props

参数说明类型默认值
data可嵌套的节点属性的数组,生成tree的数据Array[]
multiple支持多选Booleanfalse
allowClear显示清除按钮Booleanfalse
async异步加载数据Function(node)-
popupContainer下拉菜单渲染父节点。默认渲染到 body 上,如果你遇到菜单滚动定位问题,试试修改为滚动的区域,并相对其定位。Function() => document.body
position设置节点可拖拽Booleanfalse

Tree Events

事件说明参数
check点击复选框触发childrenArray
select点击树节点触发childrenArray
clear点击清除按钮触发null