Skip to content

H5预览

APP下载

checkbox 多选框

checkbox 多选框组件用于在一组选项中进行单一选择。支持自定义图标、样式穿透配置,以及灵活的事件处理。

参数

参数说明类型可选值默认值
pt样式穿透配置PassThrough--
modelValue绑定值(双向绑定)any[] | boolean-[]
activeIcon选中状态的图标名称string-"checkbox-line"
inactiveIcon未选中状态的图标名称string-"checkbox-blank-line"
showIcon是否显示状态图标boolean-true
label多选框的标签文本string--
value该多选框对应的唯一值string | number | boolean--
disabled是否禁用该多选框boolean-false

事件

事件名称说明回调参数
change选中状态变化时触发的事件(value: string | number | boolean)

PassThrough

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

参数说明类型
className组件根元素样式string
icon图标元素配置ClIconProps
label标签文本元素配置PassThroughProps

使用示例

基础用法

最基本的多选框使用方式,通过 v-model 实现双向数据绑定。

html
<template>
  <cl-checkbox v-model="selectedFramework" value="vue">Vue.js</cl-checkbox>
  <cl-checkbox v-model="selectedFramework" value="react">React</cl-checkbox>
  <cl-checkbox v-model="selectedFramework" value="angular">Angular</cl-checkbox>
  <cl-checkbox v-model="selectedFramework" value="svelte">Svelte</cl-checkbox>
</template>

<script setup>
  import { ref } from "vue";

  // 当前选中的框架
  const selectedFramework = ref(["vue"]);
</script>

禁用状态

使用 disabled 属性可以禁用特定的多选框选项。

html
<template>
  <cl-checkbox v-model="tech" value="available">可用选项</cl-checkbox>
  <cl-checkbox v-model="tech" value="disabled" disabled>禁用选项</cl-checkbox>
  <cl-checkbox v-model="tech" value="normal">普通选项</cl-checkbox>
</template>

<script setup>
  import { ref } from "vue";

  const tech = ref(["avaiable"]);
</script>

纯文本样式

通过设置 :show-icon="false" 隐藏图标,创建纯文本风格的多选框。

html
<template>
  <cl-checkbox v-model="textOption" value="option1" :show-icon="false">
    纯文本选项一
  </cl-checkbox>
  <cl-checkbox v-model="textOption" value="option2" :show-icon="false">
    纯文本选项二
  </cl-checkbox>
</template>

<script setup>
  import { ref } from "vue";

  const textOption = ref(["option1"]);
</script>

boolean 类型值

返回值类型为 truefalse

html
<template>
  <cl-checkbox v-model="agree">同意并阅读《用户协议》</cl-checkbox>
</template>

<script setup>
  import { ref } from "vue";

  const agree = ref(false);
</script>

自定义图标

使用 active-iconinactive-icon 属性自定义选中和未选中状态的图标。

html
<template>
  <cl-checkbox
    v-model="favorite"
    value="liked"
    active-icon="heart-fill"
    inactive-icon="heart-line"
  >
    我喜欢的
  </cl-checkbox>
  <cl-checkbox
    v-model="favorite"
    value="starred"
    active-icon="star-fill"
    inactive-icon="star-line"
  >
    我收藏的
  </cl-checkbox>
</template>

<script setup>
  import { ref } from "vue";

  const favorite = ref(["liked"]);
</script>

动态渲染选项

通过循环渲染创建动态的多选框组,注意需要为选项数组指定正确的 TypeScript 类型。

html
<template>
  <cl-checkbox
    v-for="(item, index) in frameworkOptions"
    :key="index"
    v-model="selectedTech"
    :value="item.value"
  >
    {{ item.label }}
  </cl-checkbox>
</template>

<script lang="ts" setup>
  import { ref } from "vue";
  import { type ClCheckboxOption } from "@/uni_modules/cool-ui";

  // 定义选项数据类型
  const frameworkOptions = ref<ClCheckboxOption[]>([
    { label: "Vue.js", value: "vue" },
    { label: "React", value: "react" },
    { label: "Angular", value: "angular" },
    { label: "Svelte", value: "svelte" },
  ]);

  // 当前选中的技术栈
  const selectedTech = ref(["vue"]);
</script>