• Checkbox多选框
    • 何时使用
    • 代码演示
      • 基本用法
      • 全选
      • 不可用
      • 受控的checkbox
      • Checkbox组
      • 布局
  • API
    • 属性
      • Checkbox
      • 事件
      • Checkbox Group
      • 事件
    • 方法
      • Checkbox

    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()获取焦点