详解iview的checkbox多选框全选时校验问题

在用iview框架的 checkbox 多选框时 遇到了一个校验问题

在iview给的例子中 代码如下https://www.iviewui.com/components/checkbox

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

        } elseif(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"

这个问题就会得到解决。

对web开发技术感兴趣的同学,欢迎私信小编加群,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。

最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容