购物车的全选下面的商品不选中?
如图:
当我点击全选的时候,总价计算出来了,但下面的商品为什么没有选中状态?
这是购物车代码:
<p class="main_box_title">购物车</p>
<div class="cart">
<input
type="checkbox"
class="cart_box"
@click="selectedAll()"
v-model="allChecked"
/>
<span class="cart_all">全选</span>
<p class="cart_money">
已选商品合计 <span
style="color: #ffa52b; font-weight: bold"
>{{ orderMoney }}</span
> 元
</p>
<p class="cart_settlement" @click="settlement()">结算</p>
</div>
<div class="cart_main">
<ul class="cart_main_title">
<li>序号</li>
<li>商品名称</li>
<li>商品图片</li>
<li>价格</li>
<li>数量</li>
<li>总价</li>
<li>操作</li>
</ul>
<ul
class="main_table"
v-for="(item, index1) in cartInformation"
:key="index1"
>
<li>
<!-- 商品选中 -->
<input
type="checkbox"
v-model="goodsInp"
:value="item.id"
name=""
:checked="item.checked"
@click="changCheck($event, index1, item.id, item, item.price)"
class="cart_box"
/>
{{ index1 + 1 }}
</li>
<li>
{{ item.goodsName | aa }}
</li>
<li>
<img :src="item.goodsPicture" alt="" />
</li>
<li>{{ item.price }}</li>
<li>
<span @click="addNum(item.id)">+</span> {{
item.num
}} <span @click="reduceNum(item.id)">-</span>
</li>
<li>
{{ item.total }}
</li>
<li>
<p @click="deleteCart(item.id)">删除</p>
</li>
</ul>
</div>
这是全选的代码:
selectedAll() {
this.allChecked = !this.allChecked;
let cartInformation = this.cartInformation;
if (cartInformation.length > 0) {
cartInformation.forEach((v) => {
if (this.allChecked == true) {
v.checked = true;
} else {
v.checked = false;
}
});
} else {
return false;
}
},
是哪里写错了,请大佬帮忙看一看,谢谢!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
检测变化的注意事项
或者
你的
checked
根本控制不了input
的值,删除多余代码:checked
可能是第一次被设置所以需要用set
设置(ps:你这没用代码也太多了)
else
里的return
没必要checked
设置完全可以使用this.allChecked
的值,没必要多加个条件判断this.cartInformation
如果是数组不需要判断长度,没有长度forEach
就不会循环,相反应该先判断this.cartInformation
有没有值,因为如果this.cartInformation
是undefined
你的程序就报错了v-model
控制是否选中,你这里用了 v-model、:value、checked三个属性不同的变量都写在input上,完全没必要element 也有全选的例子。
https://element.eleme.cn/#/zh...
https://codepen.io/1567887123...
array.forEach
不属于vue监听变化array事件可以在
cartInformation.forEach
后,添加一个this.$forceUpdate();
方法参考地址: https://cn.vuejs.org/v2/guide...