亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue實(shí)現(xiàn)購(gòu)物車功能(商品分類)

 更新時(shí)間:2020年04月20日 11:05:06   作者:uuai  
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)購(gòu)物車功能,商品分類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了vue實(shí)現(xiàn)購(gòu)物車功能的具體代碼,供大家參考,具體內(nèi)容如下

new Vue({
 el: "#app",
 data: {
 cIndex: 0,
 lists: [
  {
  title: "推薦商品",
  goods: [
   {
   id: 0,
   img: './images/goods.png',
   name: '散稱櫻桃1',
   price: '10.00',
   num: 0
   },
   {
   id: 1,
   img: './images/goods.png',
   name: '散稱櫻桃1',
   price: '10.00',
   num: 0
   }
 
  ]
  },
  {
  title: "推薦商品",
  goods: [
   {
   id: 2,
   img: './images/goods.png',
   name: '散稱櫻桃2',
   price: '20.00',
   num: 0
   },
   {
   id: 3,
   img: './images/goods.png',
   name: '散稱櫻桃2',
   price: '20.00',
   num: 0
   },
  ]
  },
 ],
 carArr: [],
 appearCar: false,
 },
 computed:{
 alltotal:function () {
  var alltotal = 0;
  var allNum = 0;
  for(var i = 0,len = this.lists.length;i<len;i++){
  for(var j = 0,goodsLen = this.lists[i].goods.length;j<goodsLen;j++){
   alltotal += parseInt(this.lists[i].goods[j].num)*parseFloat(this.lists[i].goods[j].price);
   allNum += parseInt(this.lists[i].goods[j].num);
  }
  }
  return [alltotal,allNum]
 },
 },
 methods: {
 leftTap: function (index) {
  this.cIndex = index
 },
 showCar: function () {
  if (this.carArr.length == 0) {
  this.appearCar = false
  } else {
  this.appearCar = !this.appearCar
  }
 
 },
 //商品數(shù)量加
 addNum: function (data) {
  data.num++;
  var carArr = this.carArr;
  var isCar = false;
  if (carArr == 0) {
  carArr.push(data)
  }
  for (var i = 0, len = carArr.length; i < len; i++) {
  if (data.id == carArr[i].id) {
   isCar = true
  }
  }
  if (!isCar) {
  carArr.push(data)
  }
 },
 reduceNum: function (data) {
  if (data.num <= 0) return;
  var carArr = this.carArr;
  data.num--;
  var isCar = false;
  for (var i = 0, len = carArr.length; i < len; i++) {
  if (carArr[i].num <= 0) {
   carArr.splice(i, 1)
  }
  }
 },
 carAddNum: function (index) {
  this.carArr[index].num++
 },
 carReduceNum: function (index) {
  this.carArr[index].num--;
  if (this.carArr[index].num <= 0) {
  this.carArr.splice(index, 1)
  }
  if (this.carArr.length == 0) {
  this.appearCar = !this.appearCar
  }
 },
 // 清空
 delCar: function () {
  confirm('確定清空購(gòu)物車嗎?');
  var cur = this.cIndex;
  var goods = this.lists[cur].goods
  if (true) {
  this.carArr = [];
  this.appearCar = !this.appearCar;
  for(var i = 0,len = this.lists.length;i<len;i++){
   for(var j = 0,goodsLen = this.lists[i].goods.length;j<goodsLen;j++){
   this.lists[i].goods[j].num=0;
   }
  }
  }
 },
 Settlement:function () {
  if(this.alltotal[0]<=0){
  console.log('我不動(dòng)')
  }else{
  window.location.href = 'cashierPay.html'
  }
 }
 }
})

html頁(yè)面

<div id="app" v-cloak>
 <div class='box'>
 <div class='boxleft'>
  <div class='boxla'>
  <img src='./images/sm.png'/>
  <span>掃碼</span>
  </div>
  <ul class='boxlbox'>
  <template v-for="(item,index) in lists">
   <li @click='leftTap(index)' :class="{boxlb_cheak:cIndex==index}" class='boxlb'>
   <span class='boxlb_inner' :class="{boxlb_inner_cheak:cIndex==index}">{{item.title}}</span>
   </li>
  </template>
  </ul>
 </div>
 <ul class='boxright'>
  <li class='boxri' v-for="(item,index) in lists[cIndex].goods">
  <img class='boxri_img' :src='item.img'/>
  <div class='boxri_text'>
   <div class='boxrit_left'>
   <p class='boxritl_name'>{{item.name}}</p>
   <p class='boxritl_price'>¥{{item.price}}</p>
   </div>
   <div class='boxrit_right'>
   <img @click='reduceNum(item)' v-show="item.num>0" class='boxrit_right_img' src='./images/minus.png'/>
   <span class='boxrit_right_num' v-show="item.num>0">{{item.num}}</span>
   <img @click='addNum(item)' class='boxrit_right_img' src='./images/add.png'/>
   </div>
  </div>
  </li>
 </ul>
 </div>
 <footer class='footer'>
 <div class='cartImgBox'>
  <img class='cartImg' src='./images/car.png' @click='showCar'/>
  共{{alltotal[1]}}件商品
 </div>
 <div class='footerb'>¥{{alltotal[0]}}</div>
 <div @click='Settlement' class='footerc'>結(jié)算</div>
 </footer>
 <!-- 購(gòu)物車 -->
 
 <div class='shop-car-mask' v-show="appearCar">
 <div class='shop-com'>
  <div class='shop-title'>
  <span>已選商品</span>
  <span @click="delCar">清空</span>
  </div>
  <ul class="car-shopList">
  <template v-for='(item,index) in carArr'>
   <li class='car-list'>
   <div class='car-img'>
    <img :src='item.img'/>
   </div>
   <div class='car-name'>{{item.name}}</div>
   <div class='car-num'>¥{{item.price}}</div>
   <div class='boxrit_right2'>
    <img @click='carReduceNum(index)' class='boxrit_right_img2' src='./images/minus.png'/>
    <span class='boxrit_right_num2'>{{item.num}}</span>
    <img @click='carAddNum(index)' class='boxrit_right_img2' src='./images/add.png'/>
   </div>
   </li>
  </template>
  </ul>
 </div>
 </div>
</div>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue3實(shí)現(xiàn)alert自定義的plugins方式

    vue3實(shí)現(xiàn)alert自定義的plugins方式

    這篇文章主要介紹了vue3實(shí)現(xiàn)alert自定義的plugins方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • typescript+vite項(xiàng)目配置別名的方法實(shí)現(xiàn)

    typescript+vite項(xiàng)目配置別名的方法實(shí)現(xiàn)

    我們?yōu)榱耸÷匀唛L(zhǎng)的路徑,經(jīng)常喜歡配置路徑別名,本文主要介紹了typescript+vite項(xiàng)目配置別名的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • vue3中如何使用Pinia實(shí)現(xiàn)數(shù)據(jù)持久化操作

    vue3中如何使用Pinia實(shí)現(xiàn)數(shù)據(jù)持久化操作

    使用vue3中的pinia,我們可以在多個(gè)頁(yè)面間共享數(shù)據(jù),但是一旦我們關(guān)閉或刷新頁(yè)面,這些數(shù)據(jù)就會(huì)丟失,因此,我們需要有一種數(shù)據(jù)持久化的解決方案,下面我們就來(lái)看看具體如何解決的吧
    2023-10-10
  • 解決Vue + Echarts 使用markLine標(biāo)線(precision精度問(wèn)題)

    解決Vue + Echarts 使用markLine標(biāo)線(precision精度問(wèn)題)

    這篇文章主要介紹了解決Vue + Echarts 使用markLine標(biāo)線(precision精度問(wèn)題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • vue項(xiàng)目在webpack2實(shí)現(xiàn)移動(dòng)端字體自適配功能

    vue項(xiàng)目在webpack2實(shí)現(xiàn)移動(dòng)端字體自適配功能

    這篇文章主要介紹了vue項(xiàng)目在webpack2實(shí)現(xiàn)移動(dòng)端字體自適配的相關(guān)知識(shí),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Vue全局注冊(cè)與局部注冊(cè)兩種組件注冊(cè)的方式

    Vue全局注冊(cè)與局部注冊(cè)兩種組件注冊(cè)的方式

    本文主要介紹了Vue全局注冊(cè)與局部注冊(cè)兩種組件注冊(cè)的方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • vue-路由精講 二級(jí)路由和三級(jí)路由的作用

    vue-路由精講 二級(jí)路由和三級(jí)路由的作用

    這篇文章主要介紹了vue-路由精講 二級(jí)路由和三級(jí)路由的作用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • vue配置文件自動(dòng)生成路由和菜單實(shí)例代碼

    vue配置文件自動(dòng)生成路由和菜單實(shí)例代碼

    因?yàn)椴煌挠脩粲胁煌臋?quán)限,能訪問(wèn)的頁(yè)面是不一樣的,所以我們?cè)趯懞笈_(tái)管理系統(tǒng)時(shí)就會(huì)遇過(guò)這樣的需求:根據(jù)后臺(tái)數(shù)據(jù)動(dòng)態(tài)添加路由和菜單,這篇文章主要給大家介紹了關(guān)于vue配置文件自動(dòng)生成路由和菜單的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • vue Element左側(cè)無(wú)限級(jí)菜單實(shí)現(xiàn)

    vue Element左側(cè)無(wú)限級(jí)菜單實(shí)現(xiàn)

    這篇文章主要介紹了vue Element左側(cè)無(wú)限級(jí)菜單實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • ElementUI的this.$notify.close()調(diào)用不起作用的解決

    ElementUI的this.$notify.close()調(diào)用不起作用的解決

    本文主要介紹了ElementUI的this.$notify.close()調(diào)用不起作用的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論