Checkbox 复选框
复选框组件。用于在选项中选中零个或多个值。
受控组件,需要声明 modelValue
属性
基础用法
使用 value
属性定义选中时的值,组件的默认插槽放置展示内容。
添加 disabled
属性,声明组件为禁用状态。
show code
<template>
<Flex gap="160px">
<Flex gap="24px">
<Checkbox v-model="value" value="A">A</Checkbox>
<Checkbox v-model="value" value="B">B</Checkbox>
</Flex>
<Flex gap="24px">
<Checkbox v-model="value" value="A" disabled>A</Checkbox>
<Checkbox v-model="value" value="B" disabled>B</Checkbox>
</Flex>
</Flex>
</template>
<script>
import { defineComponent, ref } from 'vue'
import { Flex, Checkbox } from 'comz'
export default defineComponent({
components: {
Flex,
Checkbox
},
setup() {
return {
value: ref([])
}
}
})
</script>
值类型
Radio
组件的 value
属性可以传递 string
、number
、Array
、boolean
、object
类型的值。
value
在组件内部会使用 JSON.stringify
序列化成 JSON
格式再进行处理。需要注意不能被序列化的属性值将会被抛弃,不能保证正确性,所以请避免使用其他类型的值。
value: []
Invalid value: []
show code
<template>
<pre>value: <code>{{ JSON.stringify(value, null, 0) }}</code></pre>
<Flex gap="24px">
<Checkbox v-model="value" :value="`string`">String</Checkbox>
<Checkbox v-model="value" :value="123">Number</Checkbox>
<Checkbox v-model="value" :value="['arr1', 'arr2']">Array</Checkbox>
<Checkbox v-model="value" :value="true">Boolean</Checkbox>
<Checkbox v-model="value" :value="{ key: 'value' }">Object</Checkbox>
</Flex>
<br />
<pre>Invalid value: <code>{{ JSON.stringify(value2, null, 0) }}</code></pre>
<Flex gap="24px">
<Checkbox v-model="value2" :value="() => {}">Function</Checkbox>
<Checkbox v-model="value2" :value="null">Null</Checkbox>
<Checkbox v-model="value2" :value="[new Map(), () => {}]">Array</Checkbox>
<Checkbox v-model="value2" :value="{ key: () => {} }">Object</Checkbox>
</Flex>
</template>
<script>
import { defineComponent, ref } from 'vue'
import { Flex, Checkbox } from 'comz'
export default defineComponent({
components: {
Flex,
Checkbox
},
setup() {
return {
value: ref([]),
value2: ref([])
}
}
})
</script>
展示内容
Checkbox
的默认插槽可以放置任意内容。
show code
<template>
<Flex gap="160px">
<Flex gap="24px">
<Checkbox v-model="value" value="image1">
<Icon size="64px" color="#d2d2d2"><CardImage /></Icon>
</Checkbox>
<Checkbox v-model="value" value="image2">
<Icon size="64px" color="#d2d2d2"><CardImage /></Icon>
</Checkbox>
<Checkbox v-model="value" value="image3">
<Icon size="64px" color="#d2d2d2"><CardImage /></Icon>
</Checkbox>
</Flex>
</Flex>
</template>
<script>
import { defineComponent, ref } from 'vue'
import { Flex, Checkbox, Icon } from 'comz'
import { CardImage } from '@comz/icons'
export default defineComponent({
components: {
Flex,
Checkbox,
Icon,
CardImage
},
setup() {
return {
value: ref([])
}
}
})
</script>
API
属性
Attribute | Type | Default | Description |
---|
value | string | '' | 单选框的值 |
modelValue | string[] | [] | 当前选中的值 |
disabled | boolean | false | 是否禁用 |
插槽
Slot | Description |
---|
default | 默认插槽 |
事件
Event | Type | Description |
---|
update:modelValue | (state: string) => void | 监听 modelValue 值变化 |