组件/Cascader 级联选择
通用组件

Cascader 级联选择

用于选择具有层级关系的数据,支持搜索、单选/多选与异步加载子节点。

该页面由 AI 迁移生成,请谨慎使用

内容已迁移完成,但仍建议结合源码和人工评审结果使用。

Cascader 级联选择

用于选择具有层级关系的数据,支持搜索、单选/多选与异步加载子节点。

基础用法

Cascader

示例即将加载...
<script setup lang="ts">
import { ref } from 'vue'

const value1 = ref<any>(undefined)
const value2 = ref<any>([])

const options = [
  {
    value: 'zhejiang',
    label: 'Zhejiang',
    children: [
      {
        value: 'hangzhou',
        label: 'Hangzhou',
        children: [
          { value: 'xihu', label: 'West Lake', leaf: true },
          { value: 'binjiang', label: 'Binjiang', leaf: true },
        ],
      },
    ],
  },
  {
    value: 'jiangsu',
    label: 'Jiangsu',
    children: [
      {
        value: 'nanjing',
        label: 'Nanjing',
        children: [
          { value: 'zhonghuamen', label: 'Zhong Hua Men', leaf: true },
        ],
      },
    ],
  },
]
</script>

<template>
  <div style="display: flex; flex-direction: column; gap: 12px; width: 520px;">
    <div style="display: flex; gap: 12px; align-items: center;">
      <TxCascader v-model="value1" :options="options" placeholder="Single" />
      <TxCascader v-model="value2" :options="options" multiple placeholder="Multiple" />
    </div>

    <div style="color: var(--tx-text-color-secondary); font-size: 12px;">
      single: {{ value1 }}
    </div>
    <div style="color: var(--tx-text-color-secondary); font-size: 12px;">
      multiple: {{ value2 }}
    </div>
  </div>
</template>

注意事项

  • 单选模式 modelValue 为路径数组,多选模式为路径数组列表。
  • expandTrigger 可控制点击/悬停展开(hover 模式下点击非叶子节点不会展开)。
  • 异步 load 仅在节点未提供 children 且未标记 leaf 时触发。

API

TxCascader Props

属性名类型默认值说明
modelValueCascaderValue-当前值(v-model)
optionsCascaderNode[][]数据源
multiplebooleanfalse是否多选
disabledbooleanfalse禁用
placeholderstring'请选择'占位
searchablebooleantrue是否可搜索
clearablebooleantrue是否可清空
placementPopoverPlacement'bottom-start'浮层位置
dropdownOffsetnumber6浮层偏移
dropdownWidthnumber360浮层宽度
dropdownMaxWidthnumber520浮层最大宽度
dropdownMaxHeightnumber340浮层最大高度
expandTrigger'click' | 'hover' | 'both''both'展开触发方式
load(node, level) => Promise<CascaderNode[]>-异步加载子节点(仅对未提供 children 的节点生效)

CascaderNode

字段类型说明
valuestring | number唯一标识
labelstring展示文本
disabledboolean是否禁用
leafboolean是否叶子节点
childrenCascaderNode[]子节点(可选)

CascaderValue

  • 单选:CascaderPathArray<string | number>
  • 多选:CascaderPath[]

Events

事件名参数说明
update:modelValue(v)v-model 更新
change(v)值变化
open-打开浮层
close-关闭浮层

Expose

名称类型说明
open()() => void打开
close()() => void关闭
toggle()() => void切换
focus()() => void聚焦触发器
blur()() => void失焦触发器
clear()() => void清空
setValue(v)(v) => void设置值
getValue()() => any获取当前值