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 | number800

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>