Checkbox 多选框

多选框。

何时使用

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

代码演示

基本用法

简单的 checkbox。

  1. <template>
  2. <v-checkbox>checkbox</v-checkbox>
  3. <v-checkbox v-model="checkStatus" :true-value="0" :false-value="1" @change="onChange">checkbox</v-checkbox>
  4. </template>
  5. <script>
  6. export default {
  7. data () {
  8. return {
  9. checkStatus: 1
  10. }
  11. },
  12. methods: {
  13. onChange(value) {
  14. console.log("checkbox change event!!! " + value);
  15. }
  16. }
  17. }
  18. </script>

受控的 Checkbox

联动 checkbox。

  1. <template>
  2. <p style="margin-bottom: 16px;">
  3. <v-checkbox v-model="checked" :disabled="disabled" @change="onChange">
  4. <span v-if="!checked">取消</span>
  5. <span v-if="checked">选中</span>
  6. -
  7. <span v-if="!disabled">可用</span>
  8. <span v-if="disabled">不可用</span>
  9. </v-checkbox>
  10. </p>
  11. <p>
  12. <button type="button" class="ant-btn ant-btn-primary ant-btn-sm" @click="checked = !checked">
  13. <span v-if="checked">取 消</span>
  14. <span v-if="!checked">选 中</span>
  15. </button>
  16. <button type="button" class="ant-btn ant-btn-primary ant-btn-sm" style="margin-left: 10px;" @click="disabled = !disabled">
  17. <span v-if="disabled">可用</span>
  18. <span v-if="!disabled">不可用</span>
  19. </button>
  20. </p>
  21. </template>
  22. <script>
  23. export default {
  24. data() {
  25. return {
  26. checked: false,
  27. disabled: false
  28. }
  29. },
  30. methods: {
  31. onChange(value) {
  32. console.log("checkbox change event!!! " + value);
  33. }
  34. }
  35. }
  36. </script>

不可用

checkbox 不可用。

  1. <template>
  2. <v-checkbox disabled>checkbox</v-checkbox>
  3. <v-checkbox :value="true" disabled>checkbox</v-checkbox>
  4. </template>

checkbox 组

方便的从数组生成 Checkbox 组。

  1. <template>
  2. <div>
  3. <p style="margin-bottom: 16px;">
  4. <v-checkbox-group :data="options" v-model="arrayValue" @change="checkGroup" :max="2"></v-checkbox-group>
  5. </p>
  6. <p style="margin-bottom: 16px;">
  7. <v-checkbox-group @change="checkGroup">
  8. <v-checkbox v-for="item in optionsWithDisabled" :true-value="item.value" :disabled="item.disabled" :key="item.value">{{item.text}}</v-checkbox>
  9. </v-checkbox-group>
  10. </p>
  11. <p style="margin-bottom: 16px;">
  12. <v-checkbox-group disabled>
  13. <v-checkbox v-for="item in options" :true-value="item.value" :key="item.value">{{item.label}}</v-checkbox>
  14. </v-checkbox-group>
  15. </p>
  16. </div>
  17. </template>
  18. <script>
  19. export default {
  20. data() {
  21. return {
  22. arrayValue: [],
  23. options: [
  24. {label: '苹果', value: 'Apple'},
  25. {label: '梨', value: 'Pear'},
  26. {label: '橘', value: 'Orange'},
  27. ],
  28. optionsWithDisabled: [
  29. {text: '苹果', value: 'Apple'},
  30. {text: '梨', value: 'Pear'},
  31. {text: '橘', value: 'Orange', disabled: true},
  32. ]
  33. }
  34. },
  35. methods: {
  36. checkGroup(values) {
  37. console.log("checkboxGroup change event!!! ");
  38. console.log(values);
  39. }
  40. }
  41. }
  42. </script>

全选

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

  1. <template>
  2. <div>
  3. <p>
  4. <v-checkbox :indeterminate="indeterminate" v-model="allChecked" @click="checkAll">全选</v-checkbox>
  5. </p>
  6. <p style="margin-bottom: 16px;">
  7. <v-checkbox-group :data="options" v-model="fruits" @change="setState"></v-checkbox-group>
  8. </p>
  9. </div>
  10. </template>
  11. <script>
  12. export default {
  13. data() {
  14. return {
  15. indeterminate: true,
  16. allChecked: false,
  17. fruits: ['Apple', 'Orange'],
  18. options: [
  19. {label: '苹果', value: 'Apple'},
  20. {label: '梨', value: 'Pear'},
  21. {label: '橘', value: 'Orange'},
  22. ],
  23. allFruits: ['Apple', 'Pear', 'Orange']
  24. }
  25. },
  26. methods: {
  27. checkAll() {
  28. if (this.fruits.length == this.options.length) {
  29. this.fruits = [];
  30. this.allChecked = false;
  31. this.indeterminate = false;
  32. } else {
  33. this.fruits = JSON.parse(JSON.stringify(this.allFruits));
  34. this.allChecked = true;
  35. this.indeterminate = false;
  36. }
  37. },
  38. setState() {
  39. this.indeterminate = this.fruits.length > 0 && this.fruits.length < this.options.length;
  40. this.allChecked = this.fruits.length == this.options.length;
  41. }
  42. }
  43. }
  44. </script>

API

Checkbox Props

参数说明类型默认值
value指定当前是否选中Anyfalse
true-value选中时的值Anytrue
false-value没有选中时的值Anyfalse
disabled只读,无法进行交互Booleanfalse
indeterminate设置 indeterminate 状态,只负责样式控制Booleanfalse

Checkbox Group Props

参数说明类型默认值
value默认选中的选项Array[]
keyField选项的value的字段名Stringvalue
label选项显示的文本的字段名Stringlabel
data选项Array
disabled禁用Booleanfalse
max控制checkbox组最多的选中数量Number-

Data Props

参数说明类型默认值
value选项的值(该字段可通过keyField属性修改)String
label选项的标签(可通过label属性修改)String
disabled是否禁用Booleanfalse

Checkbox Events

事件说明参数
change值发生变化的时候触发value
click点击的时候触发-

Checkbox Group Events

事件说明参数
change选择的值发生变化的时候触发value
item-change单项选择的值发生变化的时候触发value数组中对应的值
item-click点击单项的时候触发value