<style>
.demo-checkbox {
  .van-checkbox-wrapper {
    padding: 0 20px;

    .van-checkbox {
      margin: 10px 0;
    }
  }
}
</style>

<script>
export default {
  data() {
    return {
      checkbox1: true,
      checkbox2: true,
      list: [
        'a',
        'b',
        'c'
      ],
      result: ['a', 'b']
    };
  },

  watch: {
    result(val) {
      console.log(val);
    }
  }
};
</script>

## Checkbox 复选框

### 使用指南
``` javascript
import { Checkbox } from 'vant';

Vue.component(Checkbox.name, Checkbox);
```

### 代码演示

#### 基础用法

通过`v-model`绑定值即可。当`Checkbox`选中时,绑定的值即为`true`,否则为`false`。当单个`Checkbox`使用时,更建议使用`Switch`组件。

:::demo 基础用法
```html
<div class="van-checkbox-wrapper">
  <van-checkbox v-model="checkbox1">复选框1</van-checkbox>
</div>

<script>
export default {
  data() {
    return {
      checkbox1: true
    };
  }
}; 
</script>
```
:::

#### 禁用状态

设置`disabled`属性即可,此时`Checkbox`不能点击。

:::demo 禁用状态
```html
<div class="van-checkbox-wrapper">
  <van-checkbox v-model="checkbox2" disabled>复选框2</van-checkbox>
</div>

<script>
export default {
  data() {
    return {
      checkbox2: true
    };
  }
}; 
</script>
```
:::

#### Checkbox组

需要与`van-checkbox-group`一起使用,值通过`v-model`绑定在`van-checkbox-group`上,例如下面的`result`,此时`result`的值是一个数组。数组中的项即为选中的`Checkbox`的`name`属性设置的值。

:::demo Checkbox组
```html
<div class="van-checkbox-wrapper">
  <van-checkbox-group v-model="result">
    <van-checkbox v-for="(item, index) in list" :key="index" :name="item">复选框{{item}}</van-checkbox>
  </van-checkbox-group>
</div>

<script>
export default {
  data() {
    return {
      list: [
        'a',
        'b',
        'c'
      ],
      result: ['a', 'b']
    };
  },

  watch: {
    result(val) {
      console.log(val);
    }
  }
};
</script>
```
:::

#### 禁用Checkbox组

禁用`van-checkbox-group`,此时整个组都不可点击。

:::demo 禁用Checkbox组
```html
<div class="van-checkbox-wrapper">
  <van-checkbox-group v-model="result" disabled>
    <van-checkbox v-for="(item, index) in list" :key="index" :name="item">复选框{{item}}</van-checkbox>
  </van-checkbox-group>
</div>

<script>
export default {
  data() {
    return {
      list: [
        'a',
        'b',
        'c'
      ],
      result: ['a', 'b']
    };
  }
};
</script>
```
:::

#### 与Cell组件一起使用

此时你需要再引入`Cell`和`CellGroup`组件。

:::demo 与Cell组件一起使用
```html
<van-checkbox-group v-model="result">
  <van-cell-group>
    <van-cell v-for="(item, index) in list" :key="index">
      <van-checkbox :name="item">复选框{{item}}</van-checkbox>
    </van-cell>
  </van-cell-group>
</van-checkbox-group>

<script>
export default {
  data() {
    return {
      list: [
        'a',
        'b',
        'c'
      ],
      result: ['a', 'b']
    };
  }
};
</script>
```
:::

### Checkbox API

| 参数       | 说明      | 类型       | 默认值       | 可选值       |
|-----------|-----------|-----------|-------------|-------------|
| disabled | 是否禁用单选框 | `Boolean`  | `false` | - |
| name | 根据这个来判断radio是否选中 | `Boolean`  | `false` | - |

### CheckboxGroup API

| 参数       | 说明      | 类型       | 默认值       | 可选值       |
|-----------|-----------|-----------|-------------|-------------|
| disabled | 是否禁用单选框 | `Boolean` | `false` | - |

### Checkbox Event

| 事件名称       | 说明      | 回调参数 |
|-----------|-----------|-----------|
| change | 当绑定值变化时触发的事件 | 当前组件的值 |

### CheckboxGroup Event

| 事件名称       | 说明      | 回调参数 |
|-----------|-----------|-----------|
| change | 当绑定值变化时触发的事件 | 当前组件的值 |