gtht-miniapp-sdk
Version:
gtht-miniapp-sdk 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库
125 lines (85 loc) • 4.64 kB
Markdown
nav: 组件
title: Cascader
subtitle: 级联选择
group: 表单组件
## 介绍
用于在多层级数据中进行选择,常用于省市区、组织架构选择。
## 引入
```ts
import { Cascader } from 'sard'
```
## 代码演示
### 基础使用
通过 `v-model` 绑定当前值,通过 `options` 配置选项数据。
@code('${DEMO_PATH}/cascader/demo/Basic.vue')
### 选择即改变
设置 `change-on-select` 属性,允许只选中父级选项。
@code('${DEMO_PATH}/cascader/demo/ChangeOnSelect.vue')
### 异步加载
通过监听 `@select` 事件,获取当前选中的选项,将异步获取的数据作为 `children` 属性值, 再把组件的 `options` 更新一下,使组件重新渲染。如果选项的 `children` 是需要用户点击时再通过接口获取的, 此选项的 `children` 需初始化为空数组。
@code('${DEMO_PATH}/cascader/demo/Async.vue')
### 自定义面板上方内容
使用 `top` 插槽可以在面板顶部展示当前面板的一些信息。
@code('${DEMO_PATH}/cascader/demo/OptionTop.vue')
### 禁选选项
禁用的选项不可点击。
@code('${DEMO_PATH}/cascader/demo/Disabled.vue')
### 绑定所有级别的值 <sup>1.23+</sup>
如果要绑定所有级别的值,即绑定数组值,而不单单是最后一级,可以使用 `all-levels` 属性。
@code('${DEMO_PATH}/cascader/demo/AllLevels.vue')
## API
### CascaderProps
| 属性 | 描述 | 类型 | 默认值 |
| --------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------- |
| root-class | 组件根元素类名 | string | - |
| root-style | 组件根元素样式 | StyleValue | - |
| model-value (v-model) | 选中项的值 | string \| number \| (string \| number)[] | - |
| options | 可选项数据源 | CascaderOption[] | [] |
| field-keys | 自定义 `options` 中的字段 | CascaderFieldKeys | defaultFieldKeys |
| hint-text | 未选中时的提示文案 | string | '请选择' |
| label-render | 自定义可选项渲染 | (option: CascaderOption) => string | - |
| change-on-select <sup>1.14+</sup> | 点击每级选项都会触发变化 | boolean | false |
| all-levels <sup>1.23+</sup> | 是否绑定所有级别的值,而不单单是最后一级 | boolean | false |
### CascaderSlots
| 插槽 | 描述 | 属性 |
| ---- | ------------------ | -------------------- |
| top | 自定义面板上方内容 | { tabIndex: number } |
### CascaderEmits
| 事件 | 描述 | 类型 |
| ------------------------ | ---------------------- | -------------------------------------------------------------------------------------------- |
| update:model-value | 全部选项选择完成后触发 | (value: string \| number \| (string \| number)[], selectedOptions: CascaderOption[]) => void |
| change <sup>1.9.2+</sup> | 全部选项选择完成后触发 | (value: string \| number \| (string \| number)[], selectedOptions: CascaderOption[]) => void |
| select | 选中某一项时触发 | (option: CascaderOption, tabIndex: number) => void |
### CascaderOption
```ts
interface CascaderOption {
label?: string
value?: string | number
disabled?: boolean
children?: CascaderOption[]
[key: PropertyKey]: any
}
```
### CascaderFieldKeys
```ts
interface CascaderFieldKeys {
label?: string
value?: string
disabled?: string
children?: string
}
```
### defaultFieldKeys
```ts
const defaultFieldKeys: CascaderFieldKeys = {
label: 'label',
value: 'value',
disabled: 'disabled',
children: 'children',
}
```
## 主题定制
### CSS 变量
@code('./variables.scss#variables')