router.get('/getCart',(req,res)=>{ "use strict"; user.findOne({userId:req.cookies.userId},(err,doc)=>{ if(doc){ res.json({ status:0, msg:'', result:{ list:doc.cartList } }) }else{ res.json({ status:1, msg:"购物车列表查询失败" }) } }) });
6、购物车的总价与全选
利用vue的计算属性可以实现属性的随时变化,计算属性只有在相关数据发送改变时才会随之改变,计算属性的实现像函数,但使用类似于一般属性,例如总价totalPrice与判断是否全部选中allSelected:
computed:{ totalPrice(){ let total=0; this.cartList.forEach((item)=>{ if(item.checked) total+=parseFloat(item.salePrice)*parseInt(item.productNum); }); return total; }, allSelected(){ let selected=true; this.cartList.forEach((item)=>{ selected=selected&&item.checked; }); console.log(selected); return selected; } },
计算属性totalPrice由每个商品单价*数量而来,当其中有一个改变时,总价会立即改变,显示在页面中。
allSelected由每个商品是否选中作‘与'运算而来,当有其中一个的选中状态发送改变,allSelected也会改变,并改变购物车的全选标志。