iT邦幫忙

2021 iThome 鐵人賽

DAY 16
0
Modern Web

30天肝出購物網站系列 第 16

Day16:16 - 購物車服務(4) - 前端 - 購物車數量增減、刪除

  • 分享至 

  • xImage
  •  

হ্যালো,我是Charlie!
在Day15當中我們完成了後端的購物車數量增減跟刪除,而今天我們將完成前端的購物車數量增減跟刪除。

================================◉‿◉=================================

首先是購物車數量的部分,先在header.vue當中的cart區塊,新增@change方法:

<b-form-spinbutton id="product_id_spin" v-model="item.amount" min="1" max="100" @change="fixAmount(item.id)"></b-form-spinbutton>

接著先在apis\cart.js當中新增fixAmount方法:

export function fixCartData(data,token){
   return axios.put(`http://${host()}:${port()}/usercart`,data,{
     headers:{
       "AUTHORIZATION":token
     }
   })
}

然後在header.vue當中引入,並新增fixAmount:

import { getCartData,fixCartData } from '@/apis/cart.js'

fixAmount(cid){
  var username = window.localStorage.getItem('username')
  var token = window.localStorage.getItem('token')
  var record = {}
  this.carts.forEach((item) => {
    if(item.id == cid){
      record = item
    }
  })
  var data = {
    "username":username,
    "pid":record.product.id,
    "amount":record.amount
  }
  fixCartData(data,token).then((response) => {
    if(response.data.code == STATUS_OK){
      this.$bvToast.toast("修改數量成功",{
        title: '購物車訊息',
        autoHideDelay: 5000,
        appendToast: true
      })
    }else{
      this.$bvToast.toast(response.data.data,{
        title:"購物車訊息",
        autoHideDelay:5000,
        appendToast: true
      })
    }
  })
 },

這裡有個新成員是bvToast,這個是bootstrap-vue當中的toast訊息,會在右方顯示,其中傳入的文字是toast裡面的訊息,title是toast的標題,autoHideDelay是隱藏的時間,appendToast則是是否新增另外一個toast在下方。

效果如下:
https://ithelp.ithome.com.tw/upload/images/20210930/20141666qtmSqyhFsQ.png

接著是刪除方法,一樣在b-button當中新增@click方法:

<b-button variant="danger" @click="deleteCart(item.id)">
	刪除
</b-button>

接著在apis\cart.js當中新增api接口:

export function deleteCartData(cid,token){
   return axios.delete(`http://${host()}:${port()}/usercart/${cid}`,data,{
     headers:{
       "AUTHORIZATION":token
     }
   })
}

接著在header.vue當中新增deleteCart方法,這裡是傳入cid的部分:

deleteCart(cid){
	var token = window.localStorage.getItem("token")
	deleteCartData(cid,token).then((response) => {
	  if(response.data.code == STATUS_OK){
	    this.carts.forEach((item,index) => {
	      if(item.id == cid){
	        this.carts.splice(index,1)
	      }
	    })
	    this.$bvToast.toast("刪除成功",{
	      title:"購物車訊息",
	      autoHideDelay:5000,
	      appendToast:true
	    })
	  }else{
	    this.$bvToast.toast(response.data.data,{
	      title:"購物車訊息",
	      autoHideDelay:5000,
	      appendToast:true
	    })
	  }
	})
},

如果測試成功的話,下次再點開購物車的時候就會發現商品已經刪除。

================================◉‿◉=================================

Day16結束了!在今天我們完成了前端的購物車商品增減跟刪除,而明天我們將完成後端的結帳、商品顯示API,See ya next Day!


上一篇
Day15:15 - 購物車服務(3) - 後端 - 購物車數量增減、刪除API
下一篇
Day17:17 - 結帳服務(1) - 後端 - 結帳、訂單新增API
系列文
30天肝出購物網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言