Checkbox 复选框
单独使用
单独使用复选框表示在「是」、「否」两种状态之前进行选择,使用时给 c-checkbox
的 v-model
提供一个 Boolean
类型的值即可。
<c-checkbox
v-model="autoUpdate"
label="开启自动更新"
/>
<script>
export default {
data () {
return { autoUpdate: false }
}
}
</script>
禁用状态
给 c-checkbox
添加 disabled
属性即可将其禁用,用户不能再修改它的状态。
<c-checkbox
disabled
v-model="autoUpdate"
label="自动更新(开发中)"
/>
<c-checkbox
disabled
v-model="basic"
label="基础套餐(必选)"
/>
<script>
export default {
data () {
return {
autoUpdate: false,
basic: true
}
}
}
</script>
多选框组
你选择了 [ 3 ]
<c-checkbox-group
v-model="selected"
:options="options"
/>
<p>你选择了 {{ selected }}</p>
<script>
export default {
data () {
return {
options: [
{ value: 1, label: '选项1' },
{ value: 2, label: '选项2' },
{ value: 3, label: '选项3', disabled: true }
],
selected: [3]
}
}
}
</script>
多选框组自定义内容
你选择了 [ "选项2" ]
<c-checkbox-group
v-model="selected"
>
<c-checkbox label="a" >选项1</c-checkbox>
<c-checkbox label="选项2" ></c-checkbox>
<c-checkbox label="选项3" ></c-checkbox>
</c-checkbox-group>
<p>你选择了 {{ selected }}</p>
<c-button primary @click="resetSelected">重置</c-button>
<script>
export default {
data () {
return {
selected: ["选项2"]
}
},
methods: {
resetSelected () {
this.selected = []
}
}
}
</script>
indeterminate 状态
indeterminate
通常用于展示一组未全部被选中(部分选中)的多选框组状态。
你选择了 [ "Node" ]
<c-checkbox
v-model="allChecked"
:indeterminate="indeterminate"
label="全部选中"
@change="onCheckAllChange"
/>
<br/>
<c-checkbox-group
v-model="selected"
:options="options"
@change="onCheckedResultChange"
/>
<p>你选择了 {{ selected }}</p>
<script>
export default {
data () {
return {
options: [ 'Node', 'Nginx', 'Vue' ],
selected: ['Node'],
allChecked: false,
indeterminate: true
}
},
methods: {
onCheckAllChange (e) {
this.selected = !e ? [] : this.options
this.indeterminate = false
},
onCheckedResultChange (e) {
const total = this.options.length
const checked = this.selected.length
this.allChecked = e.length === total
this.indeterminate = 0 < checked && checked < total
}
}
}
</script>
多选验证
Clair 可以帮助你限制用户最少或最多选择多少项。
请选择2-4项:
<span>请选择2-4项:</span>
<c-checkbox-group
v-model="selected"
:options="options"
:min-items="2"
:max-items="4"
/>
<p v-if="selected.length">你选择了 {{ selected.join(', ') }}</p>
<script>
export default {
data () {
return {
options: [
{ value: 1, label: '香蕉' },
{ value: 2, label: '苹果' },
{ value: 3, label: '梨'},
{ value: 4, label: '芒果'},
{ value: 5, label: '木瓜'},
{ value: 6, label: '榴莲'}
],
selected: []
}
}
}
</script>
API
c-checkbox 属性
属性 | 类型 | 默认值 | 说明 |
---|---|---|---|
label | String | 无 | 复选框关联的标签 |
disabled | Boolean | false | 复选框是否被禁用 |
indeterminate | Boolean | false | indeterminate 状态 |
size | String | 'md' | 复选框尺寸 |
c-checkbox-group 属性
属性 | 类型 | 默认值 | 说明 |
---|---|---|---|
options | Array | 无 | 复选框组提供的选项列表 |
required | Boolean | false | 该选项组是否必须选择一个 |
min-items | Number | 无 | 最少选择几项 |
max-items | Number | 无 | 最多选择几项 |