Skip to content

Checkbox 复选框

15:36

复选框组件一般用于需要多个选择的场景,该组件功能完整,使用方便

平台差异说明

AppH5微信小程序支付宝小程序百度小程序头条小程序QQ小程序

TIP

  • 0.5.2 版本开始,checkbox-group 组件支持 v-model 双向绑定,checkbox 组件新增 value 参数,value如不设置,默认值取name属性, 详情见下方 API 说明。
  • 本次升级完全兼容之前用法,但推荐使用 checkbox-groupv-model 进行双向绑定,更加简洁方便。

基本使用

  • 该组件无需强制搭配checkboxGroup组件使用(视情况而定),可以单个独立使用u-checkbox组件
html
<template>
	<view>
		<u-checkbox-group v-model="checkboxValues" @change="checkboxGroupChange">
			<u-checkbox 
				v-for="(item, index) in list" :key="index"
				:label="item.label" :value="item.value"
				@change="checkboxChange" 
			></u-checkbox>
		</u-checkbox-group>
		<u-button @click="checkedAll">全选</u-button>
	</view>
</template>

<script setup lang="ts">
import { ref, reactive } from 'vue'

interface CheckboxItem {
  label: string
  value: string
  checked: boolean
  disabled: boolean
}

const checkboxValues = ref(['apple']);

const list = reactive<CheckboxItem[]>([
  {
    label: 'apple',
    value: 'apple'
    checked: false,
    disabled: false
  },
  {
    label: 'banner',
    value: 'banner'
    checked: false,
    disabled: false
  },
  {
    label: 'orange',
    value: 'orange'
    checked: false,
    disabled: false
  }
])

// 选中某个复选框时,由checkbox时触发
const checkboxChange = (e: any) => {
  //console.log(e);
}

// 选中任一checkbox时,由checkbox-group触发
const checkboxGroupChange = (e: any) => {
  // console.log(e);
}

// 全选
const checkedAll = () => {
  checkboxValues.value = list.map(item => item.name)
}
</script>

禁用checkbox

设置disabledtrue,即可禁用某个组件,让用户无法点击,禁用分为两种状态,一是未勾选前禁用,这时只显示一个灰色的区域。二是已勾选后 再禁用,会有灰色的已勾选的图标,但此时依然是不可操作的。

html
<u-checkbox v-model="checked" :disabled="false" label="天涯" />

自定义形状

可以通过设置shapesquare或者circle,将复选框设置为方形或者圆形

html
<u-checkbox v-model="checked" shape="circle" label="明月" />

自定义颜色

此处所指的颜色,为checkbox选中时的背景颜色,参数为active-color

html
<u-checkbox v-model="checked" active-color="red" label="光影" />

文本是否可点击

设置label-disabledfalse,点击文本时,无法操作checkbox

html
<u-checkbox v-model="checked" :label-disabled="false" label="剑舞" />

API

Checkbox Props

注意:需要给checkbox组件通过v-model绑定一个布尔值,来初始化checkbox的状态,随后该值被双向绑定, 当用户勾选复选框时,该值在checkbox内部被修改为true,并反映到父组件,否则为false,换言之,您无需监听checkboxchange事件,也能 知道某一个checkbox是否被选中的状态

注意:checkboxcheckbox-group二者同名参数中,checkbox的参数优先级更高。

参数说明类型默认值可选值版本
v-model双向绑定某一个checkbox的值,如果将该变量设置为true,将会被选中String \ Number--
size组件整体的大小,单位rpxString \ Number---
label-sizelabel字体大小,单位rpxString \ Number---
icon-size图标大小,单位rpxString \ Number---
labelcheckbox组件的文本显示名称String \ Number---
valuecheckbox组件的标示符String \ Number--v0.5.2+
namevalue,即将废弃String \ Number---
shape形状,见上方说明String-square-
disabled是否禁用Boolean-false / true-
label-disabled是否禁止点击文本操作checkboxBoolean-false / true-
active-color选中时的颜色,如设置CheckboxGroupactive-color将失效String---

CheckboxGroup Props

参数说明类型默认值可选值版本
v-model双向绑定某一个checkbox的值,如果将该变量设置为true,将会被选中Array--v0.5.2+
max最多能选中多少个checkboxString \ Number999--
disabled是否禁用所有checkboxBooleanfalsetrue-
icon-size图标大小,单位rpxString \ Number20--
size组件整体的大小,单位rpxString \ Number34--
shape形状,见上方说明Stringcirclesquare-
active-color选中时的颜色,应用到所有子Checkbox组件String#2979ff--
label-disabled是否禁止点击文本操作checkboxBooleanfalsetrue-
widthcheckbox的宽度,需带单位,如50%150rpxStringauto--
wrap是否每个checkbox占一行Booleanfalsetrue-

Checkbox Event

事件名说明回调参数版本
change某个checkbox状态发生变化时触发,回调为boolean类型数值boolean(当前checkbox的选中状态)v0.5.2由object改为boolean

CheckboxGroup Event

事件名说明回调参数版本
change任一个checkbox状态发生变化时触发,回调为一个对象detail = array( [元素为被选中的checkboxvalue] )-

Checkbox Slots

名称说明版本
default默认插槽,用于放置checkbox的文本-