日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

van-checkbox 全選,解決單個點擊后會取消全部的問題

作者:ZionHH 更新時間: 2022-05-12 編程語言
  • 理想中的代碼
<van-checkbox v-model="checkAll" shape="square" @change='handleCheckAll'>全選van-checkbox>
<van-checkbox-group v-model="checked" @change="handleCheck">
	<van-checkbox
		class="item"
		v-for="(item, index) in data"
		shape="square"
		:name="item.id"
		:key="item.id">
		復選框{{index+1}}
	van-checkbox>
van-checkbox-group>
data () {
	return {
        data: [{id: 1},{id: 2},{id: 3}, {id: 4}],
        checked: [],
        checkAll: false
	}
},
methods: {
	handleCheckAll(val){
		this.checked = val ? this.data.map(item => item.id) : []
	},
	handleCheck(val){
		this.checkAll = this.checked.length === this.data.length
	}
}

哦豁,出現下圖中的問題。
demo
全選之后,取消其中一項,全部都取消了?

接下來我在handleCheck事件里打印了一下val,結果發現:
在這里插入圖片描述
如圖中所示,取消了一項后,觸發了兩次,第二次直接清空了

于是我靈機一動,在handleCheckAll里改為這樣判斷

handleCheckAll(val){
	let checkedCount = this.checked.length
	if (val) {
		this.checked = this.data.map(item => item.id)
	} else if (checkedCount === this.data.length) {
		this.checked = []
	}
},

接下來就可以愉快的使用啦
在這里插入圖片描述

我查閱了官方也給出了解決方法,但我覺得比較繁瑣,沒有使用。
https://github.com/youzan/vant/issues/533

原文鏈接:https://blog.csdn.net/z291493823/article/details/111589946

欄目分類
最近更新