Checkbox 多选框

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

    单独使用

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

    Checkbox 多选框 - 图2

    组合使用

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

    不可用

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

    Checkbox 多选框 - 图4

    显示边框

    4.0.0 设置属性 border 可以显示边框。

    <template>
        <CheckboxGroup v-model="border">
            <Checkbox label="香蕉" border></Checkbox>
            <Checkbox label="苹果" border></Checkbox>
            <Checkbox label="西瓜" border></Checkbox>
        </CheckboxGroup>
    </template>
    <script>
        export default {
            data () {
                return {
                    border: ['香蕉']
                }
            }
        }
    </script>
    

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

    Checkbox 多选框 - 图6

    全选

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

    <template>
        <div style="border-bottom: 1px solid #e9e9e9;padding-bottom:6px;margin-bottom:6px;">
            <Checkbox
                :indeterminate="indeterminate"
                :value="checkAll"
                @click.prevent.native="handleCheckAll">全选</Checkbox>
        </div>
        <CheckboxGroup v-model="checkAllGroup" @on-change="checkAllGroupChange">
            <Checkbox label="香蕉"></Checkbox>
            <Checkbox label="苹果"></Checkbox>
            <Checkbox label="西瓜"></Checkbox>
        </CheckboxGroup>
    </template>
    <script>
        export default {
            data () {
                return {
                    indeterminate: true,
                    checkAll: false,
                    checkAllGroup: ['香蕉', '西瓜']
                }
            },
            methods: {
                handleCheckAll () {
                    if (this.indeterminate) {
                        this.checkAll = false;
                    } else {
                        this.checkAll = !this.checkAll;
                    }
                    this.indeterminate = false;
    
                    if (this.checkAll) {
                        this.checkAllGroup = ['香蕉', '苹果', '西瓜'];
                    } else {
                        this.checkAllGroup = [];
                    }
                },
                checkAllGroupChange (data) {
                    if (data.length === 3) {
                        this.indeterminate = false;
                        this.checkAll = true;
                    } else if (data.length > 0) {
                        this.indeterminate = true;
                        this.checkAll = false;
                    } else {
                        this.indeterminate = false;
                        this.checkAll = false;
                    }
                }
            }
        }
    </script>