扫码点餐小程序购物车效果实现
- 时间:
- 来源: 网络
自己的第一个点餐小程序,主要包括左右菜单联动、点击数量加减、菜单和购物车数量可以同步加减、购物车动画等,纯前端实现
大致的功能样式如下图展示:
代码块
主要代码块:
//点击左侧分类切换右侧菜品
changeRightMenu:function(e){
varclassify=e.target.dataset.id;//获取点击项的id
varfoodList=this.data.foodList;
varallFoodList=this.data.allFoodList;
varnewFoodList=[];
if(classify==0){//选择了全部选项
this.setData({
curNav:classify,
foodList:allFoodList
})
}else{//选择了其他选项
for(variinallFoodList){
if(allFoodList[i].catid==classify){
newFoodList.push(allFoodList[i])
}
}
this.setData({
//右侧菜单当前显示第curNav项
curNav:classify,
foodList:newFoodList
})
}
},
//购物车及菜单中增加数量
addCount:function(e){
varid=e.currentTarget.dataset.id;[这里写链接内容](
vararr=wx.getStorageSync('cart')||[];
varf=false;
for(variinthis.data.foodList){//遍历菜单找到被点击的菜品,数量加1
if(this.data.foodList[i].id==id){
this.data.foodList[i].quantity+=1;
if(arr.length>0){
for(varjinarr){//遍历购物车找到被点击的菜品,数量加1
if(arr[j].id==id){
arr[j].quantity+=1;
f=true;
try{
wx.setStorageSync('cart',arr)
}catch(e){
console.log(e)
}
break;
}
}
if(!f){
arr.push(this.data.foodList[i]);
}
}else{
arr.push(this.data.foodList[i]);
}
try{
wx.setStorageSync('cart',arr)
}catch(e){
console.log(e)
}
break;
}
}
this.setData({
cartList:arr,
foodList:this.data.foodList
})
this.getTotalPrice();
},
//定义根据id删除数组的方法
removeByValue:function(array,val){
for(vari=0;i if(array[i].id==val){ array.splice(i,1); break; } } }, //购物车减少数量 minusCount:function(e){ varid=e.currentTarget.dataset.id; vararr=wx.getStorageSync('cart')||[]; for(variinthis.data.foodList){ if(this.data.foodList[i].id==id){ this.data.foodList[i].quantity-=1; if(this.data.foodList[i].quantity<=0){ this.data.foodList[i].quantity=0; } if(arr.length>0){ for(varjinarr){ if(arr[j].id==id){ arr[j].quantity-=1; if(arr[j].quantity<=0){ this.removeByValue(arr,id) } if(arr.length<=0){ this.setData({ foodList:this.data.foodList, cartList:[], totalNum:0, totalPrice:0, }) this.cascadeDismiss() } try{ wx.setStorageSync('cart',arr) }catch(e){ console.log(e) } } } } } } this.setData({ cartList:arr, foodList:this.data.foodList }) this.getTotalPrice(); },