詳しくはiviewのcheckboxの多選択枠の全選択時検査問題を解決します。


iviewフレームのcheckboxを使って多く枠を選ぶ時1つの検査問題に出会いました。
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」に変更します。
この問題は解決されます。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。