首页 > 编程 > JavaScript > 正文

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

2019-11-19 11:21:49
字体:
来源:转载
供稿:网友

在用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;        } 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"

这个问题就会得到解决。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表