Skip to content

TreeSelect 树形选择

AuTreeSelect 在紧凑输入框中选择单个层级节点。组件接收嵌套数据,内部生成可见树行,并支持展开、搜索、禁用节点和仅叶节点选择。

基础用法

搜索与叶节点选择

搜索时保留匹配节点的祖先路径;仅叶节点模式仍允许通过父节点的展开按钮浏览层级。

当前节点:date-picker;叶节点:未选择

vue
<template>
  <div class="tree-select-demo">
    <label>
      <span>知识库位置</span>
      <AuTreeSelect
        v-model="selectedKey"
        :data="treeData"
        filterable
        default-expand-all
      />
    </label>
    <label>
      <span>仅选择叶节点</span>
      <AuTreeSelect v-model="leafKey" :data="treeData" leaf-only :default-expanded-keys="['guides']" />
    </label>
    <p>当前节点:{{ selectedKey || '未选择' }};叶节点:{{ leafKey || '未选择' }}</p>
  </div>
</template>
<script setup>
import { ref } from 'vue';
import { AuTreeSelect } from 'aurora-plus';
const selectedKey = ref('date-picker');
const leafKey = ref(null);
const treeData = [
  {
    id: 'guides',
    label: '使用指南',
    children: [
      { id: 'start', label: '快速开始' },
      { id: 'theme', label: '主题配置' },
    ],
  },
  {
    id: 'components',
    label: '表单组件',
    children: [
      { id: 'date-picker', label: '日期选择器' },
      { id: 'tree-select', label: '树形选择' },
      { id: 'archived', label: '已归档组件', disabled: true },
    ],
  },
];
</script>
<style scoped>
.tree-select-demo {
  display: grid;
  width: min(100%, 520px);
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 12px;
}
.tree-select-demo label {
  display: grid;
  gap: 6px;
  color: var(--au-color-text-secondary);
  font-size: var(--au-font-size-small);
}
.tree-select-demo p {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--au-color-text-secondary);
  font-size: var(--au-font-size-small);
}
</style>

Attributes

属性说明类型默认值
modelValue选中节点 keystring / number / nullnull
data嵌套节点数据array[]
itemKey / labelKey / childrenKey / disabledKey字段映射stringid / label / children / disabled
expandedKeys受控展开 keyarray / nullnull
defaultExpandedKeys非受控初始展开 keyarray[]
defaultExpandAll初始展开全部父节点booleanfalse
leafOnly仅允许选择叶节点booleanfalse
filterable是否允许输入搜索booleanfalse
filterPlaceholder搜索占位文字string搜索节点
placeholder未选择时占位文字string选择节点
emptyText / noMatchText空数据 / 无匹配文字string暂无数据 / 无匹配节点
clearable是否允许清空;有值时清除按钮原位替换展开图标booleantrue
disabled / invalid禁用 / 错误状态booleanfalse
size尺寸small / default / largedefault
itemHeight / overscan虚拟列表行高 / 预渲染数number28 / 8
placement浮层方位stringbottom-start
teleported / appendTo / zIndex浮层挂载与层级boolean / string | Element / numbertrue / body / 1200
ariaLabel树与输入框无障碍名称string树形选择

Events

事件名说明参数
update:modelValue选中值变化(key)
change选择或清空(key, node, event?)
select选择节点(node)
clear清空(event)
update:expandedKeys展开 key 变化(keys)
expand-change请求切换展开状态(keys, node)
focus / blur输入框焦点变化(event)
visible-change浮层显隐变化(visible)

Exposes

focus(options?)blur()open()close(reason?),以及 inputReftreeRefpopoverRef

Aurora Plus · Vue 3 Component Library