Checkbox多选框 - 图1

Checkbox 多选框

多选框。

何时使用

  • 在一组可选项中进行多项选择时;
  • 单独使用可以表示两种状态之间的切换,和 switch 类似。区别在于切换 switch 会直接触发状态改变,而 checkbox 一般用于状态标记,需要和提交操作配合。

代码演示

Checkbox

基本用法

简单的 checkbox

  1. <template>
  2. <a-checkbox v-model:checked="checked">Checkbox</a-checkbox>
  3. </template>
  4. <script lang="ts">
  5. import { defineComponent, ref } from 'vue';
  6. export default defineComponent({
  7. setup() {
  8. return {
  9. checked: ref(false),
  10. };
  11. },
  12. });
  13. </script>

Unchecked-Enabled

CheckDisable

受控的 checkbox

联动checkbox

  1. <template>
  2. <p :style="{ marginBottom: '20px' }">
  3. <a-checkbox v-model:checked="checked" :disabled="disabled">
  4. {{ label }}
  5. </a-checkbox>
  6. </p>
  7. <p>
  8. <a-button type="primary" size="small" @click="toggleChecked">
  9. {{ !checked ? 'Check' : 'Uncheck' }}
  10. </a-button>
  11. <a-button :style="{ marginLeft: '10px' }" type="primary" size="small" @click="toggleDisable">
  12. {{ !disabled ? 'Disable' : 'Enable' }}
  13. </a-button>
  14. </p>
  15. </template>
  16. <script lang="ts">
  17. import { computed, defineComponent, ref } from 'vue';
  18. export default defineComponent({
  19. setup() {
  20. const checked = ref(false);
  21. const disabled = ref(false);
  22. const toggleChecked = () => {
  23. checked.value = !checked.value;
  24. };
  25. const toggleDisable = () => {
  26. disabled.value = !disabled.value;
  27. };
  28. const label = computed(() => {
  29. return `${checked.value ? 'Checked' : 'Unchecked'}-${
  30. disabled.value ? 'Disabled' : 'Enabled'
  31. }`;
  32. });
  33. return {
  34. label,
  35. checked,
  36. disabled,
  37. toggleChecked,
  38. toggleDisable,
  39. };
  40. },
  41. });
  42. </script>

Checkbox多选框 - 图2

Checkbox多选框 - 图3

Checkbox多选框 - 图4

Checkbox多选框 - 图5

Checkbox 组

方便的从数组生成 checkbox

  1. <template>
  2. <a-checkbox-group v-model:value="value1" name="checkboxgroup" :options="plainOptions" />
  3. <br />
  4. <a-checkbox-group v-model:value="value2" :options="plainOptions" />
  5. <br />
  6. <a-checkbox-group v-model:value="value3" :options="options" :value="['Pear']" />
  7. <br />
  8. <a-checkbox-group v-model:value="value4" :options="optionsWithDisabled" disabled>
  9. <template #label="{ value }">
  10. <span style="color: red">{{ value }}</span>
  11. </template>
  12. </a-checkbox-group>
  13. </template>
  14. <script lang="ts">
  15. import { defineComponent, reactive, toRefs } from 'vue';
  16. const plainOptions = ['Apple', 'Pear', 'Orange'];
  17. const options = [
  18. { label: 'Apple', value: 'Apple' },
  19. { label: 'Pear', value: 'Pear' },
  20. { label: 'Orange', value: 'Orange' },
  21. ];
  22. const optionsWithDisabled = [
  23. { value: 'Apple' },
  24. { label: 'Pear', value: 'Pear' },
  25. { label: 'Orange', value: 'Orange', disabled: false },
  26. ];
  27. export default defineComponent({
  28. data() {
  29. const state = reactive({
  30. value1: [],
  31. value2: ['Apple'],
  32. value3: ['Pear'],
  33. value4: ['Apple'],
  34. });
  35. return {
  36. plainOptions,
  37. options,
  38. optionsWithDisabled,
  39. ...toRefs(state),
  40. };
  41. },
  42. });
  43. </script>

Checkbox多选框 - 图6

Checkbox多选框 - 图7

全选

在实现全选效果时,你可能会用到 indeterminate 属性

  1. <template>
  2. <div :style="{ borderBottom: '1px solid #E9E9E9' }">
  3. <a-checkbox
  4. v-model:checked="checkAll"
  5. :indeterminate="indeterminate"
  6. @change="onCheckAllChange"
  7. >
  8. Check all
  9. </a-checkbox>
  10. </div>
  11. <br />
  12. <a-checkbox-group v-model:value="checkedList" :options="plainOptions" />
  13. </template>
  14. <script lang="ts">
  15. import { defineComponent, reactive, toRefs, watch } from 'vue';
  16. const plainOptions = ['Apple', 'Pear', 'Orange'];
  17. export default defineComponent({
  18. setup() {
  19. const state = reactive({
  20. indeterminate: true,
  21. checkAll: false,
  22. checkedList: ['Apple', 'Orange'],
  23. });
  24. const onCheckAllChange = (e: any) => {
  25. Object.assign(state, {
  26. checkedList: e.target.checked ? plainOptions : [],
  27. indeterminate: false,
  28. });
  29. };
  30. watch(
  31. () => state.checkedList,
  32. val => {
  33. state.indeterminate = !!val.length && val.length < plainOptions.length;
  34. state.checkAll = val.length === plainOptions.length;
  35. },
  36. );
  37. return {
  38. ...toRefs(state),
  39. plainOptions,
  40. onCheckAllChange,
  41. };
  42. },
  43. });
  44. </script>

不可用

checkbox 不可用

  1. <template>
  2. <a-checkbox v-model:checked="checked1" disabled />
  3. <br />
  4. <a-checkbox v-model:checked="checked2" disabled />
  5. </template>
  6. <script lang="ts">
  7. import { defineComponent, ref } from 'vue';
  8. export default defineComponent({
  9. setup() {
  10. return {
  11. checked1: ref(false),
  12. checked2: ref(false),
  13. };
  14. },
  15. });
  16. </script>

Checkbox多选框 - 图8

布局

Checkbox.Group 内嵌 Checkbox 并与 Grid 组件一起使用,可以实现灵活的布局

  1. <template>
  2. <a-checkbox-group v-model:value="value">
  3. <a-row>
  4. <a-col :span="8">
  5. <a-checkbox value="A">A</a-checkbox>
  6. </a-col>
  7. <a-col :span="8">
  8. <a-checkbox value="B">B</a-checkbox>
  9. </a-col>
  10. <a-col :span="8">
  11. <a-checkbox value="C">C</a-checkbox>
  12. </a-col>
  13. <a-col :span="8">
  14. <a-checkbox value="D">D</a-checkbox>
  15. </a-col>
  16. <a-col :span="8">
  17. <a-checkbox value="E">E</a-checkbox>
  18. </a-col>
  19. </a-row>
  20. </a-checkbox-group>
  21. </template>
  22. <script lang="ts">
  23. import { defineComponent, ref } from 'vue';
  24. export default defineComponent({
  25. setup() {
  26. return {
  27. value: ref([]),
  28. };
  29. },
  30. });
  31. </script>

API

属性

Checkbox

参数说明类型默认值版本
autofocus自动获取焦点booleanfalse
checked(v-model)指定当前是否选中booleanfalse
disabled失效状态booleanfalse
indeterminate设置 indeterminate 状态,只负责样式控制booleanfalse

事件

事件名称说明回调参数版本
change变化时回调函数Function(e:Event)-

Checkbox Group

参数说明类型默认值版本
disabled整组失效booleanfalse
nameCheckboxGroup 下所有 input[type=”checkbox”]name 属性string-1.5.0
options指定可选项,可以通过 slot=”label” slot-scope=”option” 定制labelstring[] | Array<{ label: string value: string disabled?: boolean, indeterminate?: boolean, onChange?: function }>[]
value(v-model)指定选中的选项string[][]

事件

事件名称说明回调参数版本
change变化时回调函数Function(checkedValue)-

方法

Checkbox

名称描述版本
blur()移除焦点
focus()获取焦点