vue 实现全选,反选功能

16 篇文章 1 订阅
12 篇文章 0 订阅

一般需要用到全选和反选的示例比如:购物车,批量添加,批量删除等

 //需要用到的变量

itemList: [], // 商品列表

totalPrice: 0, //商品总价格

isCheckAll: false, //全选的checkbox是否选中

isChecked: false, //某个checkbox是否选中

checkedIdList: [], //选中的商品的id组合

checkedItemList: [] //选中的商品的列表组合
//全选input
<tr>
    <td>
        <div>
            <input type="checkbox" :checked="isCheckAll" @click="checkAll($event)">
            <span>全选</span>
        </div>
    </td>
</tr>

//单选的input
<tr v-for="item in itemList" :key="item.id">
    <td>
        <input :checked="item.isChecked" type="checkbox" @click="checkOne($event, item.id)">
    </td>
</tr>

/全选
checkAll(e) {
    let checkAllItem = e.target;
    this.checkedIdList = [];
    this.checkedItemList = [];
    if (checkAllItem.checked) {
        for (let item of this.itemList) {
            item.isChecked = true;
            this.checkedIdList.push(item.id);
            this.checkedItemList.push(item);
            this.totalPrice += Number(item.price);
        }
        this.isCheckAll = true;
    } else {
        for (let item of this.itemList) {
            item.isChecked = false;
        }
        this.totalPrice = 0;
        this.isCheckAll = false;
        this.checkedIdList = [];
        this.checkedItemList = [];
    }
},
//单选
checkOne(e, id){
    let checkOneItem = e.target;
    if(checkOneItem.checked == true){
        for(let item of this.itemList){
            if(item.id == id){
                this.checkedIdList.push(item.id)
                this.checkedItemList.push(item)
                item.isChecked = true
            }
        }
        if(this.itemList.length == this.checkedIdList.length){
            this.isCheckAll = true;
        }
    }else {
        for(let item of this.itemList){
            if(item.id == id){
                item.isChecked = false;
                let index = this.checkedIdList.indexOf(id)
                this.checkedIdList.splice(index, 1)
                this.checkedItemList.splice(index, 1)
            }
        }
        this.isCheckAll = false
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值