Checkbox多选框

多选框

何时使用

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

代码演示

Checkbox 多选框 - 图1

基本用法

简单的checkbox

  1. <template>
  2. <a-checkbox @change="onChange">Checkbox</a-checkbox>
  3. </template>
  4. <script>
  5. export default {
  6. methods: {
  7. onChange(e) {
  8. console.log(`checked = ${e.target.checked}`);
  9. },
  10. },
  11. };
  12. </script>

Checkbox 多选框 - 图2

全选

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

  1. <template>
  2. <div>
  3. <div :style="{ borderBottom: '1px solid #E9E9E9' }">
  4. <a-checkbox :indeterminate="indeterminate" @change="onCheckAllChange" :checked="checkAll">
  5. Check all
  6. </a-checkbox>
  7. </div>
  8. <br />
  9. <a-checkbox-group :options="plainOptions" v-model="checkedList" @change="onChange" />
  10. </div>
  11. </template>
  12. <script>
  13. const plainOptions = ['Apple', 'Pear', 'Orange'];
  14. const defaultCheckedList = ['Apple', 'Orange'];
  15. export default {
  16. data() {
  17. return {
  18. checkedList: defaultCheckedList,
  19. indeterminate: true,
  20. checkAll: false,
  21. plainOptions,
  22. };
  23. },
  24. methods: {
  25. onChange(checkedList) {
  26. this.indeterminate = !!checkedList.length && checkedList.length < plainOptions.length;
  27. this.checkAll = checkedList.length === plainOptions.length;
  28. },
  29. onCheckAllChange(e) {
  30. Object.assign(this, {
  31. checkedList: e.target.checked ? plainOptions : [],
  32. indeterminate: false,
  33. checkAll: e.target.checked,
  34. });
  35. },
  36. },
  37. };
  38. </script>

Checkbox 多选框 - 图3

不可用

checkbox 不可用

  1. <template>
  2. <div>
  3. <a-checkbox :defaultChecked="false" disabled />
  4. <br />
  5. <a-checkbox defaultChecked disabled />
  6. </div>
  7. </template>

Checkbox 多选框 - 图4

受控的checkbox

联动checkbox

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

Checkbox 多选框 - 图5

Checkbox组

方便的从数组生成checkbox

  1. <template>
  2. <div>
  3. <a-checkbox-group :options="plainOptions" v-model="value" @change="onChange" />
  4. <br />
  5. <a-checkbox-group :options="plainOptions" :defaultValue="['Apple']" @change="onChange" />
  6. <br />
  7. <a-checkbox-group :options="options" :value="['Pear']" @change="onChange" />
  8. <br />
  9. <a-checkbox-group
  10. :options="optionsWithDisabled"
  11. disabled
  12. :defaultValue="['Apple']"
  13. @change="onChange"
  14. >
  15. <span style="color: red" slot="label" slot-scope="{value}">{{value}}</span>
  16. </a-checkbox-group>
  17. </div>
  18. </template>
  19. <script>
  20. const plainOptions = ['Apple', 'Pear', 'Orange'];
  21. const options = [
  22. { label: 'Apple', value: 'Apple' },
  23. { label: 'Pear', value: 'Pear' },
  24. { label: 'Orange', value: 'Orange' },
  25. ];
  26. const optionsWithDisabled = [
  27. { value: 'Apple' },
  28. { label: 'Pear', value: 'Pear' },
  29. { label: 'Orange', value: 'Orange', disabled: false },
  30. ];
  31. export default {
  32. data() {
  33. return {
  34. plainOptions,
  35. options,
  36. optionsWithDisabled,
  37. value: [],
  38. };
  39. },
  40. methods: {
  41. onChange(checkedValues) {
  42. console.log('checked = ', checkedValues);
  43. console.log('value = ', this.value);
  44. },
  45. },
  46. };
  47. </script>

Checkbox 多选框 - 图6

布局

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

  1. <template>
  2. <a-checkbox-group @change="onChange">
  3. <a-row>
  4. <a-col :span="8"><a-checkbox value="A">A</a-checkbox></a-col>
  5. <a-col :span="8"><a-checkbox value="B">B</a-checkbox></a-col>
  6. <a-col :span="8"><a-checkbox value="C">C</a-checkbox></a-col>
  7. <a-col :span="8"><a-checkbox value="D">D</a-checkbox></a-col>
  8. <a-col :span="8"><a-checkbox value="E">E</a-checkbox></a-col>
  9. </a-row>
  10. </a-checkbox-group>
  11. </template>
  12. <script>
  13. export default {
  14. methods: {
  15. onChange(checkedValues) {
  16. console.log('checked = ', checkedValues);
  17. },
  18. },
  19. };
  20. </script>

API

属性

Checkbox

参数说明类型默认值
autoFocus自动获取焦点booleanfalse
checked指定当前是否选中booleanfalse
defaultChecked初始是否选中booleanfalse
disabled失效状态booleanfalse
indeterminate设置 indeterminate 状态,只负责样式控制booleanfalse

事件

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

Checkbox Group

参数说明类型默认值
defaultValue默认选中的选项string[][]
disabled整组失效booleanfalse
options指定可选项,可以通过 slot="label" slot-scope="option" 定制labelstring[] | Array<{ label: string value: string disabled?: boolean, onChange?: function }>[]
value指定选中的选项string[][]

事件

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

方法

Checkbox

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