首先给数组每个数据加个checked
用selectCheckItemId记住选择的Id
mounted() { this.cartList.forEach(item => { this.$set(item, "checked", false) //Vue 解决不能检测到对象属性的添加或删除 if (item.orderItemList) { item.orderItemList.forEach((citem) => { this.$set(citem, "checked", false) }) } }); },
商品全选
//全选 checkAll() { this.cartList.forEach(item => { item.checked = this.checkedAll; if (item.orderItemList) { item.orderItemList.forEach(citem => { citem.checked = this.checkedAll; if (this.checkedAll) { this.selectCheckItemId.push(citem.itemId); } else { this.selectCheckItemId = []; } }) } }) },
商家全选
//商家全选 _checkAll(val) { val.orderItemList.forEach(item => { item.checked = val.checked; if (val.checked) { this.selectCheckItemId.push(item.itemId); } else { let index = this.selectCheckItemId.indexOf(item.itemId); this.selectCheckItemId.splice(index, 1); } }); //全选判断 如果商家全选则勾选全选 if (this.cartList.every(item => item.checked)) { this.checkedAll = true; } else { this.checkedAll = false; } },
商品全选
//商品选择框 handleCheck(item, index) { var check = []; //用于存放商家的checked this.cartList.forEach((items, index) => { if (items.orderItemList) { //判断是否商品全选 var bool = items.orderItemList.every(citem => citem.checked); if (bool) { //商品全选则勾选对应商家 items.checked = true; } else { items.checked = false; } check.push(bool); } }) if (item.checked) { this.selectCheckItemId.push(item.itemId); } else { let index = this.selectCheckItemId.indexOf(item.itemId); this.selectCheckItemId.splice(index, 1); } //如果商家全选则勾选全选 if (check.indexOf(false) == -1) { this.checkedAll = true; } else { this.checkedAll = false; } },