为了账号安全,请及时绑定邮箱和手机立即绑定

关于@我就这b样提交的全选BUG,我给各位踩坑了

@我就这b样

关于那个@我就这b样 提问“ 给你提一个BUG,假若我要是上来不直接点击全选,而是一个单选一个单选慢慢的选择。你会发现我单选按钮全部选择完了以后,全选按钮并没有对应的选择上。”的解决方案是有问题的:

按照你的代码,单单点击第二个商品的选中按钮时,无论有没有选中第一个,全选的flag会变成true,因为第二个数组后执行,覆盖了第一个:

所以此处不能用forEach()循环,需要使用For循环(for in, for of)都可以,具体为什么在下面

for (var item of this.productList) {

    if(!item.productChecked) {

       this.selectAllFlag = false;

       break;

} else {

   this.selectAllFlag = true

}

}

为何不能用forEach(),因为forEach()不能break出来,有同学可能会使用return,return这里是个大坑,return会返回到上层函数,这里的上层函数还是forEach,所以还是会吧数组遍历完。

谢谢你提交的bug


正在回答

3 回答

讲得好

2 回复 有任何疑惑可以回复我~

666

0 回复 有任何疑惑可以回复我~
selecteProduct: function(item) {
            if(typeof item.checked === 'undefined') {
                this.$set(item, 'checked', true)
            } else {
                item.checked = !item.checked;
            }
            var isAll = this.productList.every((value, index) => {
                return value.checked === true;
            });
            this.checkAll = isAll ? true : false;
        },


3 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
使用vue2.0实现购物车和地址选配功能
  • 参与学习       96790    人
  • 解答问题       499    个

本视频教程结合案例完整贯穿各个知识点,轻松玩转vue2.0框架

进入课程

关于@我就这b样提交的全选BUG,我给各位踩坑了

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号