vue购物车功能实现思路,前端vue购物车逻辑

  vue购物车功能实现思路,前端vue购物车逻辑

  这篇文章主要为大家详细介绍了vue vant实现购物车全选和反选功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  本文实例为大家分享了vue vant实现购物车全选和反选的具体代码,供大家参考,具体内容如下

  这是效果图:

  话不多少,直接上代码:

  模板

  div class=购物车

  “key=”item中的div class= ST-spacing-main v-for=(item)。id

  div class=st-item产品-项目

  div class= ST-border-bottom store-title

  p @click=checkShop(item)

  货车-复选框v-model=item.checked

  跨度

  {{item.shopTitle}}

  van-icon name=arrow/

  /span

  /凡-复选框

  /p

  /div

  ul class= commodity-list v-for=(优点,价值)中的项目。“产品列表”:key=“值”

  li @click=ischeck(item,pros)

  van-checkbox v-model= pro。已选中/van-复选框

  /李

  里

  //这是商品组件

  产品购物车大小=迷你类型=数字:选项= 3 /产品购物车

  /李

  /ul

  /div

  /div

   van-submit-bar class= settlement :price= 10060 button-text=去结算@submit=onSubmit

  van-checkbox v-model= isCheckAll @ click= check all()全选/凡-复选框

   span class=购物车-运费slot=默认不含运费/span

  /凡-提交-栏

  /div

  /模板

  脚本

  导出默认值{

  data () {

  返回{

  cartInfoList: [

  {

  id: 1,

  商店名称: 苹果旗舰店, //商店名

  选中:假,//商店选择的状态

  checkedCount: 0,//此商店被选择的商品数量

  产品列表:[

  {

  isChecked: false,//商品选择状态

  产品名称: 2019年款macbook/苹果/MF893/A国航笔记本, //产品名

  类别: 15寸/2.3/8G/256/土豪金/标准套餐,

  价格:10200,//价格

  计数:1 //数量

  }

  ]

  },

  {

  id: 2,

  商店名称: 锤子科技旗舰店,

  已检查:错误,

  检查次数:0

  产品列表:[

  {

  isChecked: false,

  产品标题: 锤子手机手感保护膜,

  类别: 登陆月球,

  价格:9.9,

  计数:1

  },

  {

  isChecked: false,

  产品标题: 锤子手机赞成割手版,

  类别: 128克/割手版,

  价格:1790,

  计数:1

  }

  ]

  }

  ],

  isCheckAll: false,//是否全选

  allPrice: 0,//所有价格

  所有商店:0,//被选中的商店数量

  allCount: 0 //被选中的产品数量

  }

  },

  方法:{

  //选中单个商品

  ischeck (item,pro) {

  //为未选中的时候改变为假的,反之为真实的

  !pro.isChecked?这个. checkTrue(item,pro):这个. checkFalse(item,pro)

  },

  //修改单个商品的真实的

  _checkTrue (item,pro) {

  pro.isChecked=true //将商品选中状态改为真实的

  //这里执行了两部,选中商品数量先1,再与该店铺商品数量比较,如果相等就更改店铺选中状态为真实的

  如果(项。检查计数===项目。产品列表。长度){

  item.checked=true

  }否则{

  返回""

  }

  //项目。检查计数===项目。产品列表。长度?item.checked=true:" "

  //如果店铺选中状态改为没错,选中店铺数量先1,再与店铺数量比较,如果相等就更改全选选中状态为真实的

  ////当商店全选状态,每全选一个商店,被选中商店数加一,数值等于所有商店数,全选状态为真实的

  if (item.checked) {

  如果(这个。所有店铺===这个。卡廷福里斯特。长度){

  this.isCheckAll=true

  }否则{

  this.isCheckAll=false

  }

  }否则{

  返回""

  }

  //item.checked?这个。所有店铺===这个。卡廷福里斯特。长度?这个。ischeckall=true:this。ischeckall=false:" "

  },

  //修改单个商品的错误的

  _checkFalse (item,pro) {

  pro.isChecked=false //将商品选中状态改为错误的

  - item.checkedCount //被选中的商品数减一

  if (item.checked) {

  //如果店铺是被选中的,更改店铺选中状态

  item.checked=false //当商店状态为选中时改变错误的

  - this.allShops //商店数减一

  }

  this.isCheckAll=false //全选状态为错误的

  },

  //选择整个商店的商品

  验货点(商品){

  !检查过了吗?这个. shopTrue(item):这个. shopFalse(项目)

  },

  //遍历商店每个商品,状态为错误的的改变为没错,又在_checkTrue()方法中将商店状态改为真实的

  _shopTrue (item) {

  item.productList.forEach(pro={

  if (pro.isChecked===false) {

  这个. checkTrue(item,pro)

  }否则{

  返回""

  }

  //pro.isChecked===false?这个. checkTrue(item,pro):

  })

  },

  _shopFalse (item) {

  item.productList.forEach(pro={

  //同上

  if (pro.isChecked===true) {

  这个. checkFalse(item,pro)

  }否则{

  返回""

  }

  //pro.isChecked===true?这个. checkFalse(item,pro):

  })

  },

  //选择全部商店的商品,已经计算总价和总数量的函数

  checkAll () {

  //方法内调用方法

  this.isCheckAll=!this.isCheckAll

  this.isCheckAll

  ?这个。卡廷福里斯特。foreach(item={

  这个. shopTrue(项目)

  })

  :这个。卡廷福里斯特。foreach(item={

  这个. shopFalse(项目)

  })

  },

  _totalPeice () {

  //每次调用此方法,将初始值为0,遍历价格并累加

  this.allPrice=0

  这个。卡廷福里斯特。foreach(item={

  let products=item.productList

  products.forEach(pros={

  if (pros.isChecked) {

  这个。所有价格=优点。价格* pro。数数

  }

  })

  })

  },

  _totalCount () {

  //同上

  this.allCount=0

  这个。卡廷福里斯特。foreach(item={

  这个。所有计数=项目。检查计数

  })

  },

  onSubmit () {}

  },

  观察:{

  //深度监听所有数据,每次改变重新计算总价和总数

  cartInfoList: {

  深:真的,

  处理程序(瓦尔,老瓦尔){

  这个. totalPeice()

  这个. totalCount()

  }

  }

  }

  }

  /脚本

  style lang=less 范围

  @导入./资产/更少/视图/购物车。少’;

  /风格

  较少的文件

  @ spacing-size:29雷姆;主购物车{。圣-项目-标题{

  填充:@ spacing-size;

  对齐-内容:灵活开始;主题-复选框{

  margin-right:@ spacing-size;

  }

  }。项目列表{

  左填充:77雷姆;

  位置:相对;主题-复选框{

  页边距-顶部:-.24r em

  位置:绝对;

  左:0;

  top:50%;

  }

  }

  }

  关于vue。j组件的教程,请大家点击专题vue。j组件学习教程进行学习。

  更多某视频剪辑软件学习教程请阅读专题《vue实战教程》

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

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: