返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue实现购物车功能(亲测可用)
  • 283
分享到

vue实现购物车功能(亲测可用)

2024-04-02 19:04:59 283人浏览 薄情痞子
摘要

本文实例为大家分享了Vue实现购物车功能的具体代码,供大家参考,具体内容如下 如图,需要有加入购物车的标识 思路如下:点击购物车按钮时将商品的id,title,imgUrl(海报图

本文实例为大家分享了Vue实现购物车功能的具体代码,供大家参考,具体内容如下

如图,需要有加入购物车的标识

思路如下:点击购物车按钮时将商品的id,title,imgUrl(海报图),flag(标识符,flag非常重要,为以后复选框判断是否选中做参考)变成一个数组形式,cart,传入vuex

<template>
    <div>
  <van-Goods-action>
    <van-goods-action-icon icon="chat-o" text="客服" @click="onClickIcon" />
    <van-goods-action-icon icon="cart-o" text="购物车" @click="onClickIcon" />
    <van-goods-action-button
      type="warning"
      text="加入购物车"
      @click="onClickButton"
    />
    <van-goods-action-button
      type="danger"
      text="立即购买"
      @click="onClickButton"
    />
  </van-goods-action>
    </div>
</template>

<script>
  import { Toast } from 'vant';
  import { GoodsAction, GoodsActionIcon, GoodsActionButton } from 'vant';
  export default {
    name: 'tabs',
    data(){
      return{

      }
    },
    props:{
      id:String,
      current:String,
      title:String,
      imgUrl:String
    },
    components:{
      [Toast.name]: Toast,
      [GoodsAction.name]: GoodsAction,
      [GoodsActionIcon.name]: GoodsActionIcon,
      [GoodsActionButton.name]: GoodsActionButton
    },
     methods: {
        onClickIcon() {
          Toast('点击图标');
        },
        onClickButton() {
          var cart={id:this.id,current:this.current,num:1,title:this.title,imgUrl:this.imgUrl,flag:true}
          this.$store.commit('addCart',cart)
          Toast('已加入购物车');
        },
      },
    }
</script>

<style>
</style>

2.vuex如下

import Vue from 'vue'
import Vuex from 'vuex'
import mutations from './mutations.js'
Vue.use(Vuex)
export default new Vuex.Store({
  state: {
    cart:[],
    money:0,
    allchecked:true
  },
  mutations,
})
export default{、
//判断是否已经加入过购物车,如果加入过,则该产品数量加一,若没有加入过,将产品加入cart中
  addCart(state,data){
    for(var i=0;i<state.cart.length;i++){
      if(state.cart[i].id==data.id){
        state.cart[i].num+=data.num
        return
      }
    }
    state.cart.push(data)
  },
  //该函数为数字+1
  addCartNum(state,index){
    state.cart[index].num++
  },
    //该函数为数字-1
  jianCartNum(state,index){
    if(state.cart[index].num==1){return;}
    state.cart[index].num--
  },
}

3.购物车

思路如下:若没有产品则显示无产品,若有产品在购物车里,则可进行增删加减

<template>
  <div class="bg">
    <div class="bGCart" v-if="isGood">
      <div class="cartAd">
        <h3>
          购物车
        </h3>
        <div v-if="select">
          <div class="admin" @click="onAdmin">管理</div>
        </div>
        <div v-if="!select">
          <div class="admin" @click="onOk">完成</div>
        </div>
      </div>
      <van-checkbox-group v-model="result" ref="checkboxGroup">
        <div class="cart" v-for="(item,index) in cartList" :key="index">
          <van-checkbox :name="item.id" class="checkbox" checked-color="red" v-model="item.flag" @click="chooseChange(item.id, item)">
          </van-checkbox>
          <div class="box">
            <img class="img" :src="baseUrl+item.imgUrl" />
            <div class="wraper">
              <div class="title">{{item.title}}</div>
              <div class="container">
                <div class="money">¥{{item.current}}</div>
                <div>
                  <span class="jian" @click="jian(index)">
                    <span class="jianAdj"> -</span>
                  </span>
                  <span>{{item.num}}</span>
                  <span class="jia" @click="add(index)">
                    <span class="jiaAdj"> +</span>
                  </span>
                </div>
              </div>
            </div>
          </div>
        </div>
      </van-checkbox-group>
      <div class="order" v-if="select">

        <van-submit-bar :price="getAll" button-text="提交订单">
          <van-checkbox v-model="allchecked" checked-color="red" @click="allOrder">全选/取消</van-checkbox>
        </van-submit-bar>
      </div>
      <div class="order" v-if="!select">
        <van-submit-bar :price="getAll" button-text="删除" @submit="del">
          <van-checkbox v-model="allchecked" checked-color="red" @click="allOrder">全选/取消</van-checkbox>
        </van-submit-bar>
      </div>
 </div>
 <div v-if="!isGood" class="noGood">
  <h3>
    购物车
  </h3>
  <img src="../../../static/img/cart.jpg"/>
   <span class="add">
      您还没有添加任何产品哦
   </span>
   <van-button round  type="danger">去逛逛</van-button>
 </div>
      <bottom></bottom>
  </div>
</template>

<script>
  import {
    Checkbox,
    CheckboxGroup
  } from 'vant';
  import {
    SubmitBar
  } from 'vant';
  import {
    Button
  } from 'vant';
  export default {
    name: 'cart',
    data() {
      return {
        result: [],
        cartList: [],
        select: true,
        money: 0,
        results: [],
        baseUrl: this.common.baseUrl,
        allchecked: this.$store.state.allchecked,
        isGood:true
      }
    },
    components: {
      [SubmitBar.name]: SubmitBar,
      [Button.name]: Button,
      [Checkbox.name]: Checkbox,
      [CheckboxGroup.name]: CheckboxGroup,
      bottom: () => import('./components/bottom.vue')
    },
    computed: {
      getAll() {
        var money = 0
        this.$store.state.cart.forEach(item => {
          if (item.flag) {
            money += (item.num * item.current) * 100
          }
        })
        return money
      }
    },
    methods: {
      //选择单个复选框(非常重要)
     //由于我进来是使复选框全选,则在第一次点击的时候使得flag=false
      chooseChange(i, item) {
        if (this.result.indexOf(i) > -1) {
          var arrs = this.result.filter(function(item) {
            return item != i;
          });
          this.result = arrs;
          item.flag = false;
        } else {
          this.result.push(i);
          item.flag = true;
        }
        //判断单个和全部,若单个全选,则this.$store.state.allchecked为true
        if (this.result.length < this.$store.state.cart.length) {
          this.$store.state.allchecked = false;
          this.allchecked = this.$store.state.allchecked;
        } else {
          this.$store.state.allchecked = true;
          this.allchecked = this.$store.state.allchecked;
        }
      },
      //全选状态
      allOrder() {
        //如果选择状态为选中的时候,设置this.$store.state.allchecked=false变成未选中
        if (this.$store.state.allchecked) {
          this.$store.state.cart.forEach(item => {
            item.flag = false;
          })
          this.result = [];
          this.$store.state.allchecked = false;
          this.allchecked = this.$store.state.allchecked;
        } else {
          this.$store.state.cart.forEach(item => {
            item.flag = true;
            if (this.result.indexOf(item.id) < 0) {
              this.result.push(item.id);
            }
          })
          this.$store.state.allchecked = true;
          this.allchecked = this.$store.state.allchecked;
        }
      },
      //数字+
      add(index) {
        this.$store.commit('addCartNum', index)

      },
      //数字减
      jian(index) {
        this.$store.commit('jianCartNum', index)
      },
      //点击管理
      onAdmin() {
        this.select = false
      },
      //点击完成
      onOk() {
        this.select = true
        if(this.result.length==0){
          console.log(1)
          this.isGood=false
        }else{
           console.log(this.result)
        }
      },
      //删除
      del() {
        if (this.result.length == this.$store.state.cart.length) {
          this.$store.state.cart.splice(0, this.result.length)
          this.result.splice(0, this.result.length)
        } else {
          this.$store.state.cart.forEach(item => {
            if (item.flag) {
              this.$store.state.cart.splice(item, 1)
              this.result.splice(item.id, 1)
            }
          })
        }
      }
    },
    created() {
      this.cartList = this.$store.state.cart
      if (this.$store.state.allchecked) {
        for (var i = 0; i < this.$store.state.cart.length; i++) {
          this.result.push(this.$store.state.cart[i].id)
        }
      }
      if(this.result.length==0){
        this.isGood=false
      }
    }
  }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: vue实现购物车功能(亲测可用)

本文链接: https://lsjlt.com/news/146029.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • vue实现购物车功能(亲测可用)
    本文实例为大家分享了vue实现购物车功能的具体代码,供大家参考,具体内容如下 如图,需要有加入购物车的标识 思路如下:点击购物车按钮时将商品的id,title,imgUrl(海报图...
    99+
    2024-04-02
  • vue如果实现购物车功能
    本文小编为大家详细介绍“vue如果实现购物车功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue如果实现购物车功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 原理分析...
    99+
    2024-04-02
  • vue实现书籍购物车功能
    本文实例为大家分享了vue实现书籍购物车功能的具体代码,供大家参考,具体内容如下 效果图 点击增加、减少购买数量和移除总价格会变化 代码 <!DOCTYPE html&g...
    99+
    2024-04-02
  • vue实现购物车完整功能
    vue实现购物车商品单选、全选及商品数量和总价计算,供大家参考,具体内容如下 效果展示 HTML <template>   <div class="buyCar"...
    99+
    2024-04-02
  • vue如何实现购物车功能
    本篇内容主要讲解“vue如何实现购物车功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue如何实现购物车功能”吧!如图,需要有加入购物车的标识思路如下:点击购物车按钮时将商品的id,titl...
    99+
    2023-06-30
  • vue实现简单的购物车功能
    本文实例为大家分享了vue实现简单购物车功能的具体代码,供大家参考,具体内容如下 1.实现效果: 2.涉及到的知识点: toFixed函数、过滤器、reduce高阶函数、v-bin...
    99+
    2024-04-02
  • jquery实现购物车功能
    本文实例为大家分享了jquery实现购物车功能的具体代码,供大家参考,具体内容如下 html ​<!DOCTYPE html> <html> ...
    99+
    2024-04-02
  • python实现购物车功能
    本文实例为大家分享了python实现购物车功能的具体代码,供大家参考,具体内容如下 功能要求: 要求用户输入总资产,例如:2000显示商品列表,让用户根据序号选择商品,加入购物车购买...
    99+
    2024-04-02
  • javaweb实现购物车功能
    本篇文章讲的是如何使用javaweb相关知识模拟购物车功能 (web练手小项目) 使用到的相关知识(部分知识点在文章中简单涉及到):        html  cs  javascript  jsp  servlet   ajax  jQu...
    99+
    2023-10-24
    mybatis java mysql servlet tomcat
  • python购物车功能实现
    name = "gaowang" pwd = "123.abc" list_he=[]          #定义空列表,后面接收 for i in range(3):     username = input("请输入您的账号:")    ...
    99+
    2023-01-31
    购物车 功能 python
  • Vue模拟实现购物车结算功能
    本文实例为大家分享了Vue实现购物车结算功能的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <...
    99+
    2024-04-02
  • vue简单实现购物车结算功能
    本文实例为大家分享了vue简单实现购物车结算的具体代码,供大家参考,具体内容如下 样式没有写 <template>  <div class="about cont...
    99+
    2024-04-02
  • Vue实现购物车计算总价功能
    用Vue实现一个购物车计算总价的功能,供大家参考,具体内容如下 代码 html <div id="app">         <div class="panel ...
    99+
    2024-04-02
  • vue实现可改变购物数量的购物车
    本文实例为大家分享了vue实现改变购物数量的购物车,供大家参考,具体内容如下 效果图: 知识点: 1.computed 计算属性 2.filters 过滤器 实现代码: <...
    99+
    2024-04-02
  • vue如何实现简单的购物车功能
    这篇文章主要介绍“vue如何实现简单的购物车功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue如何实现简单的购物车功能”文章能帮助大家解决问题。1.实现效果:2.涉及到的知识点:toFixed...
    99+
    2023-07-02
  • 如何用php实现购物车功能
    本篇内容主要讲解“如何用php实现购物车功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用php实现购物车功能”吧!一、购物车功能的基本实现原理购物车是一个存储商品信息的容器,用户通过往购...
    99+
    2023-07-05
  • 怎么用php实现购物车功能
    要使用PHP实现购物车功能,可以按照以下步骤进行:1. 创建一个数据库表来存储购物车信息。例如,可以创建一个名为"cart"的表,包...
    99+
    2023-08-24
    PHP
  • 怎么用vue实现可改变购物数量的购物车
    这篇文章主要讲解了“怎么用vue实现可改变购物数量的购物车”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用vue实现可改变购物数量的购物车”吧!本文实例为大家分享了vue实现改变购物数量...
    99+
    2023-06-20
  • Vue怎么实现购物车计算总价功能
    本文小编为大家详细介绍“Vue怎么实现购物车计算总价功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue怎么实现购物车计算总价功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果:代码html<di...
    99+
    2023-06-30
  • Vue2.0怎么实现购物车功能
    这篇文章将为大家详细讲解有关Vue2.0怎么实现购物车功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介vue.js是由华人尤雨溪开发的一套MVVM框架。vue.js...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作