最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實現購物車結算功能

 更新時間:2021年09月07日 10:52:09   作者:周小姐  
這篇文章主要為大家詳細介紹了vue實現購物車結算功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

用vue做的購物車結算的功能,供大家參考,具體內容如下

代碼:

<!-- 占位 -->
<template>
 <div>
 <div class="product_table">
 <div class="product_info">商品信息</div>
 <div class="product_info">商品金額</div>
 <div class="product_info">商品數量</div>
 <div class="product_info">總金額</div>
 <div class="product_info">編輯</div>
 </div>
 <div class="product_table" v-for="(item,index) in getProductList" :key="index">
 <div style="width:20px;height:20px;border-radius:10px;border:1px solid black;" @click="checkSingle(item)" :class="{checked:item.makeChoose}"></div>
 <div class="product_info">{{item.productName}}</div>
 <div class="product_info">{{item.productPrice}}</div>
 <span @click="changeNumber(item,1)">+</span>
 <input type="text" v-model="item.prductQty" style="width: 30px;">
 <span @click="changeNumber(item,-1)">-</span>
 <div class="product_info">{{item.productPrice*item.prductQty}}</div>
 <div class="product_info" @click="deleteProduct(index)">刪除</div>
 </div>
 <div style="width:20px;height:20px;border-radius:10px;border:1px solid black;margin-top:10px" @click="checkAll()" :class="{checked:checkAllItem}"></div>
 <div>總價格:{{totalPrice}}</div>
 </div>
</template>
<script>
 import Vue from 'vue'
 export default {
 name: 'side-bar-placeholder',
 data () {
 return {
 getProductList:[
 {
 productName:'西瓜',
 productPrice:100,
 prductQty:3
 },
 {
 productName:'南瓜',
 productPrice:50,
 prductQty:2
 },
 {
 productName:'蘋果',
 productPrice:300,
 prductQty:3
 },
 ],
 totalPrice:0, //總金額
 checkAllItem:false, //全部選中
 checkedList:[] //選中的數
 }
 },
 methods:{
 //刪除某一項
 deleteProduct:function (index) {
 this.getProductList.splice(index,1) 
 this.calcTotalPrice() //這里要注意,當某一項刪除時,如果你選中了,這里也是要做計算總價格的
 },
 //修改數量
 changeNumber:function (number,add) {
 if(add<0){
 number.prductQty--;
 if(number.prductQty<'1'){ //因為數量最低是1
 number.prductQty=1
 }
 }else{
 number.prductQty++;
 } 
 this.calcTotalPrice() 
 },
 //選中單個的
 checkSingle:function (item){
 if(typeof item.makeChoose=='undefined'){ //這里要注意,因為checked字段根本不在this.getProductList里面,所以你要自己賦值進去
 Vue.set(item, 'makeChoose',true) //這里應該設為true
 }else{
 item.makeChoose=!item.makeChoose
 } 
 this.calcTotalPrice() 
 },
 //選中所有的
 checkAll:function (){ 
 this.checkAllItem=!this.checkAllItem
 var _this=this
 if(this.checkAllItem){
 this.getProductList.forEach(element => {
 if(typeof element.makeChoose=='undefined'){
  Vue.set(element, 'makeChoose',_this.checkAllItem) //讓每一小項跟隨checkall來變化
 }else{
 element.makeChoose=_this.checkAllItem
 }
 });
 }else{
 this.getProductList.forEach(element => {
 if(typeof element.makeChoose=='undefined'){
  Vue.set(element, 'makeChoose',_this.checkAllItem)
 }else{
 element.makeChoose=_this.checkAllItem
 }
 });
 } 
 this.calcTotalPrice() 
 },
 //計算總金額
 calcTotalPrice:function () {
 var _this=this
 this.totalPrice=0
 this.getProductList.forEach((element,index) => {
 if(element.makeChoose){
 _this.totalPrice+=element.productPrice*element.prductQty //這里是一個累加的過程,所以要用+=
 }
 }); 
 },
 //讓頁面一進來就處于選中的狀態(tài)
 makeAllChecked:function () {
 this.getProductList.forEach((item)=>{
 if(typeof item.makeChoose=='undefined'){
 Vue.set(item, 'makeChoose',true)
 }
 }) 
 }
 } ,
 watch:{
 //如果全部選中,那么全部選中的按鈕應該變綠,如果一項不是,應該變空
 getProductList:{
 handler:function (item) {
 this.checkedList=this.getProductList.filter((element)=>{
 return element.makeChoose==true;
 }) 
 //選中數<總數據
 if(this.checkedList.length<this.getProductList.length){
 this.checkAllItem=false
 }else{
 this.checkAllItem=true
 } 
 },
 deep:true //這個deep:true一定要寫,不然肯定不會時時變化的
 }
 } ,
 created:function (){
 this.makeAllChecked()
 }
 }
</script>
<style lang="less" scoped>
.product_table{
 display: flex;
 width: 100%;
}
.product_info{
 flex:1; 
}
.checked{
 background-color:green;
}
</style>

這個代碼實現了什么?

1.在點擊加減時每個產品的總價變化,所有產品的總價變化
2.選中時才會結算
3.如果全部選中了每個子項,全部選中按鈕會變綠,如果有一項不選中,那么會變白
4.一般的購物車,我希望他一進來就是checked的狀態(tài),提高購買性
5.當我刪除某一項時,如果這一項是已經checked了的,也要讓他在計算總價時重新計算.

ps:最后一行的按鈕是全部選中哦,或者是全部取消,忘記寫了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Vue3中實現過渡動畫的方法小結

    Vue3中實現過渡動畫的方法小結

    這篇文章主要為大家詳細介紹了Vue3中實現過渡動畫的一些常用方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-10-10
  • vue從零實現一個消息通知組件的方法詳解

    vue從零實現一個消息通知組件的方法詳解

    這篇文章主要介紹了vue從零實現一個消息通知組件的方法,結合實例形式分析了vue實現消息通知組件的具體原理、實現步驟、與相關操作技巧,需要的朋友可以參考下
    2020-03-03
  • vue mounted組件的使用

    vue mounted組件的使用

    這篇文章主要介紹了vue mounted組件的使用,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • vue-router的兩種模式的區(qū)別

    vue-router的兩種模式的區(qū)別

    這篇文章主要介紹了vue-router的兩種模式的區(qū)別,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • Vue?vant-ui框架實現上拉加載下拉刷新功能

    Vue?vant-ui框架實現上拉加載下拉刷新功能

    功能需求——獲取后端接口返回的數據,實現列表數據上滑加載更多下一頁數據,下拉數據刷新功能,結合vant-ui框架實現。可直接參考使用
    2022-09-09
  • vue實現拖拽小圖標

    vue實現拖拽小圖標

    這篇文章主要為大家詳細介紹了vue實現拖拽小圖標,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue3.0 vue-router4.0打包后頁面空白的解決方法

    vue3.0 vue-router4.0打包后頁面空白的解決方法

    本文主要介紹了vue3.0 vue-router4.0打包后頁面空白的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Vue+Openlayer批量設置閃爍點的實現代碼(基于postrender機制)

    Vue+Openlayer批量設置閃爍點的實現代碼(基于postrender機制)

    本篇文章給大家介紹基于postrender機制使用Vue+Openlayer批量設置閃爍點的實現代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-09-09
  • vue?路由判斷方式

    vue?路由判斷方式

    這篇文章主要介紹了vue?路由判斷方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue中緩存組件keep alive的介紹及使用方法

    vue中緩存組件keep alive的介紹及使用方法

    這篇文章主要介紹了vue緩存組件keepalive的相關資料,keep-alive組件是使用 include exclude這兩個屬性傳入組件名稱來確認哪些可以被緩存的,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-08-08

最新評論

葵青区| 宁陵县| 彰武县| 西乌| 隆化县| 北流市| 门源| 九龙坡区| 邹平县| 普格县| 泸水县| 广西| 东港市| 都昌县| 昌黎县| 宁强县| 泌阳县| 德阳市| 朝阳县| 洪泽县| 和田县| 固镇县| 青海省| 新乡市| 福建省| 太白县| 新巴尔虎左旗| 贵德县| 南乐县| 西宁市| 南安市| 岐山县| 平定县| 普陀区| 灌阳县| 黎平县| 贵德县| 农安县| 三门县| 新建县| 嫩江县|