iview的checkbox多選框全選時校驗問題

在用iview框架的 checkbox 多選框時 遇到了一個校驗問題
在iview給的例子中 代碼如下 https://www.iviewui.com/compo...

<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>

上述代碼標粗部分所用到的是click方法
但是在做表單校驗的時候會出現一個問題,就是當你選擇香蕉,蘋果,西瓜時會觸發v-model = 'checkAllGroup' 綁定的校驗方法,但是全選/不全選的時候,這個校驗不會觸發。

解決方法 : 把全選的 @click.prevent.native="handleCheckAll" 方法 改成 @on-change="handleCheckAll"
這個問題就會得到解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章