Skip to content

H5预览

APP下载

Cascader 级联选择器

用于从多级数据结构中进行选择,常用于省市区、分类等场景。用户可以逐级展开并选择目标项,支持自定义选项内容、分隔符、禁用状态等功能,适用于需要多层级联动选择的表单或数据录入场景。

基础参数

参数说明类型可选值默认值
pt样式穿透配置PassThrough--
modelValue双向绑定的值string[]--
title选择器弹窗顶部标题string-"请选择"
placeholder输入框占位符文本string-"请选择"
options选项数据源,支持树形结构ClCascaderOption[][]
showTrigger是否显示默认触发器booleantrue
disabled是否禁用选择器booleanfalse
labelKey标签显示字段的键名string"label"
valueKey值字段的键名string"value"
textSeparator文本分隔符string" - "
height列表高度string | number400

WARNING

options 中包含多少层级的 children,用户就需要依次选择对应的层级次数,直到选中最后一级为止。

事件

事件名称说明回调参数
change选择完成后触发的事件value: string[]

PassThrough

样式穿透配置对象,用于深度自定义组件内部元素的样式。

参数说明类型
trigger选择器触发元素配置ClSelectTriggerPassThrough
popup弹窗容器配置ClPopupPassThrough

示例

基础用法

使用级联选择器展示树形结构数据,options 需要定义为 ClCascaderOption[] 类型。

html
<template>
	<cl-cascader v-model="val" :options="options"></cl-cascader>
</template>

<script setup>
	  import { ref } from "vue";
	  import { type ClCascaderOption } from "@/uni_modules/cool-ui";

	  const val = ref<string[]>([]);

	  const options = ref<ClCascaderOption[]>([{
			label: "电子产品",
			value: "1",
			children: [
				{
					label: "手机",
					value: "1-1",
					children: [
						{
							label: "苹果",
							value: "1-1-1",
						},
						{
							label: "华为",
							value: "1-1-2",
						},
						{
							label: "小米",
							value: "1-1-3"
						}
					]
				},
				{
					label: "电脑",
					value: "1-2",
					children: [
						{
							label: "笔记本",
							value: "1-2-1"
						},
						{
							label: "台式机",
							value: "1-2-2"
						}
					]
				},
			]
		},
		{
			label: "服装",
			value: "2",
			children: [
				{
					label: "男装",
					value: "2-1",
					children: [
						{
							label: "上衣",
							value: "2-1-1"
						},
						{
							label: "裤装",
							value: "2-1-2"
						},
					]
				},
				{
					label: "女装",
					value: "2-2",
					children: [
						{
							label: "裙装",
							value: "2-2-1"
						},
						{
							label: "上装",
							value: "2-2-2"
						}
					]
				}
			]
		}
	]);
</script>

地区选择示例

当使用外部 JSON 数据(如地区数据)时,由于 import 导入的类型是 UTSJSONObject,需要使用 useCascader() 进行类型转换后才能赋值给 options

html
<template>
	<cl-cascader v-model="val" :options="options"></cl-cascader>
</template>

<script setup>
	import { ref } from "vue";
	import { useCascader } from "@/uni_modules/cool-ui";
	import pca from "@/data/pca.json";

	const val = ref<string[]>([]);

	const options = useCascader(pca)
</script>