Skip to content

Checkbox 复选框

复选框(Checkbox)用于让用户在两种状态之间切换,支持单选、多选组合、开关模式等场景。

基础用法

通过 v-model 实现双向绑定。

vue

<TCheckbox label="默认复选框"/>
<TCheckbox v-model="agreed" label="已勾选"/>
<TCheckbox label="禁用" disabled/>
<TCheckbox label="禁用(已勾选)" disabled model-value="true"/>

内联排列

通过 inline 属性让复选框水平排列。

TCheckboxGroup 组模式(推荐)

通过 TCheckboxGroup 包裹多个 TCheckboxv-model 自动管理选中值数组,name / inline / disabled / validation 可统一设置并下发给子项。

vue

<TCheckboxGroup v-model="checkedArr">
  <TCheckbox value="apple" label="苹果" />
  <TCheckbox value="banana" label="香蕉" />
  <TCheckbox value="orange" label="橙子" />
</TCheckboxGroup>

options 模式(数组生成)

通过 options 属性传入字符串数组或对象数组,自动生成 TCheckbox,无需手动写子组件。

字符串数组:每个字符串同时作 labelvalue
对象数组:可指定 labelvaluedisabled
自定义渲染:通过 #option 插槽自定义每个选项的标签内容。

查看代码
vue

<!-- 字符串数组 -->
<TCheckboxGroup v-model="checkedArr" :options="['Apple', 'Pear', 'Orange']" />

<!-- 对象数组 -->
<TCheckboxGroup v-model="checkedArr" :options="[
  { label: '苹果', value: 'apple' },
  { label: '香蕉', value: 'banana' },
  { label: '橙子', value: 'orange' },
]" />

<!-- 带禁用项 -->
<TCheckboxGroup v-model="checkedArr" disabled :options="[
  { label: '苹果', value: 'apple' },
  { label: '香蕉', value: 'banana', disabled: true },
]" />

半选状态 (Indeterminate)

通过 indeterminate 属性设置半选状态。典型场景:树形或全选/反选列表中,当子项部分被勾选时,父级复选框显示为半选状态,表示"不完全全选"。

注意:半选状态是纯视觉的,不影响 v-model 的值。搭配 toggleIndeterminate 即可恢复为正常勾选/取消状态。

vue

<TCheckbox indeterminate label="半选状态"/>

验证状态

通过 validation 属性设置验证状态,配合 .valid-feedback / .invalid-feedback 显示提示。

vue

<TCheckbox label="有效状态" validation="valid"/>
<div class="valid-feedback">选择正确!</div>

<TCheckbox label="无效状态" validation="invalid"/>
<div class="invalid-feedback">请勾选此选项。</div>

自定义标签(插槽)

通过 default 插槽自定义标签内容,支持富文本和图标。

vue

<TCheckbox>
  <span>我已阅读并同意<span class="text-danger">《用户协议》</span></span>
</TCheckbox>

API

TCheckbox 属性 (Props)

属性名说明类型默认值
v-model绑定值(独立模式: boolean,组模式: 自动接管)booleanfalse
value组模式下标识选项的值anyundefined
label标签文本stringundefined
inline内联排列booleanfalse
disabled禁用状态booleanfalse
indeterminate半选状态(仅视觉)booleanfalse
validation验证状态'valid' | 'invalid'undefined
id原生 idstringundefined
name原生 namestringundefined
required必填booleanfalse

TCheckbox 事件 (Emits)

事件名说明回调参数
update:modelValue值变化时触发(独立模式)(value: boolean) => void

TCheckboxGroup 属性 (Props)

属性名说明类型默认值
v-model选中的值数组any[][]
options选项数组(字符串或对象),设置后自动生成 TCheckbox(string | { label: string, value?: any, disabled?: boolean })[]undefined
name分组名(自动传递给子 TCheckbox)stringundefined
inline内联排列(自动传递给子复选框)booleanfalse
disabled全部禁用booleanfalse
validation验证状态(自动传递给子复选框)'valid' | 'invalid'undefined

TCheckboxGroup 事件 (Emits)

事件名说明回调参数
update:modelValue选中值数组变化时触发(value: any[]) => void
change选中值数组变化时触发(value: any[]) => void

TCheckbox 插槽 (Slots)

插槽名说明
default自定义标签内容(替代 label 属性)

TCheckboxGroup 插槽 (Slots)

插槽名说明作用域参数
default自定义子项(当未设置 options 时)
option自定义选项标签(当设置了 options 时){ option: { label, value, disabled }, checked: boolean }