Checkbox 多选框

概述

基本组件-多选框。主要用于一组可选项多项选择,或者单独用于标记切换某种状态。

代码示例

Checkbox 多选框 - 图1

单独使用

使用 v-model 可以双向绑定数据。

  1. <template>
  2. <Checkbox v-model="single">Checkbox</Checkbox>
  3. </template>
  4. <script>
  5. export default {
  6. data () {
  7. return {
  8. single: false
  9. }
  10. }
  11. }
  12. </script>

Checkbox 多选框 - 图2

组合使用

使用CheckboxGroup配合数组来生成组合。在组合使用时,Checkbox 使用 label 来自动判断选中状态。每个 Checkbox 的内容可以自定义,如不填写则默认使用 label 的值。

  1. <template>
  2. <CheckboxGroup v-model="social">
  3. <Checkbox label="twitter">
  4. <Icon type="logo-twitter"></Icon>
  5. <span>Twitter</span>
  6. </Checkbox>
  7. <Checkbox label="facebook">
  8. <Icon type="logo-facebook"></Icon>
  9. <span>Facebook</span>
  10. </Checkbox>
  11. <Checkbox label="github">
  12. <Icon type="logo-github"></Icon>
  13. <span>Github</span>
  14. </Checkbox>
  15. <Checkbox label="snapchat">
  16. <Icon type="logo-snapchat"></Icon>
  17. <span>Snapchat</span>
  18. </Checkbox>
  19. </CheckboxGroup>
  20. <CheckboxGroup v-model="fruit">
  21. <Checkbox label="香蕉"></Checkbox>
  22. <Checkbox label="苹果"></Checkbox>
  23. <Checkbox label="西瓜"></Checkbox>
  24. </CheckboxGroup>
  25. </template>
  26. <script>
  27. export default {
  28. data () {
  29. return {
  30. social: ['facebook', 'github'],
  31. fruit: ['苹果']
  32. }
  33. }
  34. }
  35. </script>

Checkbox 多选框 - 图3

不可用

通过设置disabled属性来禁用多选框。

  1. <template>
  2. <Checkbox v-model="disabledSingle" disabled>Checkbox</Checkbox>
  3. <CheckboxGroup v-model="disabledGroup">
  4. <Checkbox label="香蕉" disabled></Checkbox>
  5. <Checkbox label="苹果" disabled></Checkbox>
  6. <Checkbox label="西瓜"></Checkbox>
  7. </CheckboxGroup>
  8. </template>
  9. <script>
  10. export default {
  11. data () {
  12. return {
  13. disabledSingle: true,
  14. disabledGroup: ['苹果']
  15. }
  16. }
  17. }
  18. </script>

Checkbox 多选框 - 图4

与其它组件通信

与其它组件进行数据联动。

  1. <template>
  2. <Checkbox v-model="checked" :disabled="disabled">
  3. <span v-if="checked">Checked</span>
  4. <span v-else>Unchecked</span>
  5. -
  6. <span v-if="!disabled">Usable</span>
  7. <span v-else>Disabled</span>
  8. </Checkbox>
  9. <br>
  10. <Button type="primary" @click="checked = !checked">
  11. <span v-if="!checked">Checked</span>
  12. <span v-else>Unchecked</span>
  13. </Button>
  14. <Button type="primary" @click="disabled = !disabled">
  15. <span v-if="disabled">Usable</span>
  16. <span v-else>Disabled</span>
  17. </Button>
  18. </template>
  19. <script>
  20. export default {
  21. data () {
  22. return {
  23. checked: true,
  24. disabled: false
  25. }
  26. }
  27. }
  28. </script>

Checkbox 多选框 - 图5

全选

在实现全选效果时,你可能会用到 indeterminate 属性。示例代码只是一种写法,业务中可以用更多的方法,比如计算属性。

  1. <template>
  2. <div style="border-bottom: 1px solid #e9e9e9;padding-bottom:6px;margin-bottom:6px;">
  3. <Checkbox
  4. :indeterminate="indeterminate"
  5. :value="checkAll"
  6. @click.prevent.native="handleCheckAll">全选</Checkbox>
  7. </div>
  8. <CheckboxGroup v-model="checkAllGroup" @on-change="checkAllGroupChange">
  9. <Checkbox label="香蕉"></Checkbox>
  10. <Checkbox label="苹果"></Checkbox>
  11. <Checkbox label="西瓜"></Checkbox>
  12. </CheckboxGroup>
  13. </template>
  14. <script>
  15. export default {
  16. data () {
  17. return {
  18. indeterminate: true,
  19. checkAll: false,
  20. checkAllGroup: ['香蕉', '西瓜']
  21. }
  22. },
  23. methods: {
  24. handleCheckAll () {
  25. if (this.indeterminate) {
  26. this.checkAll = false;
  27. } else {
  28. this.checkAll = !this.checkAll;
  29. }
  30. this.indeterminate = false;
  31. if (this.checkAll) {
  32. this.checkAllGroup = ['香蕉', '苹果', '西瓜'];
  33. } else {
  34. this.checkAllGroup = [];
  35. }
  36. },
  37. checkAllGroupChange (data) {
  38. if (data.length === 3) {
  39. this.indeterminate = false;
  40. this.checkAll = true;
  41. } else if (data.length > 0) {
  42. this.indeterminate = true;
  43. this.checkAll = false;
  44. } else {
  45. this.indeterminate = false;
  46. this.checkAll = false;
  47. }
  48. }
  49. }
  50. }
  51. </script>

API

Checkbox props

属性说明类型默认值
value只在单独使用时有效。可以使用 v-model 双向绑定数据Booleanfalse
label只在组合使用时有效。指定当前选项的 value 值,组合会自动判断是否选中String | Number | Boolean-
disabled是否禁用当前项Booleanfalse
indeterminate设置 indeterminate 状态,只负责样式控制Booleanfalse
size多选框的尺寸,可选值为 largesmalldefault 或者不设置String-
true-value选中时的值,当使用类似 1 和 0 来判断是否选中时会很有用String, Number, Booleantrue
false-value没有选中时的值,当使用类似 1 和 0 来判断是否选中时会很有用String, Number, Booleanfalse

Checkbox events

事件名说明返回值
on-change只在单独使用时有效。在选项状态发生改变时触发,通过修改外部的数据改变时不会触发true | false

CheckboxGroup props

属性说明类型默认值
value指定选中项目的集合,可以使用 v-model 双向绑定数据Array[]
size多选框组的尺寸,可选值为 largesmalldefault 或者不设置String-

CheckboxGroup events

事件名说明返回值
on-change在选项状态发生改变时触发,返回已选中的数组。通过修改外部的数据改变时不会触发[…]