购物车商品选择处理

今天我们要实现的效果是商品购物车的选择效果。


image.png

数据分为两级,第一级是店铺shop,第二级是店铺下面的商品good。
主要有三点:
1.不选择商品时,商品会被取消掉


image.png

2.不选择店铺时,店铺的所有商品都被取消掉


image.png

3.不选择全选时,所有商品都被取消掉
image.png

现在用代码来实现:
由于给的接口api没有checked,所以我们在获取数据的时候自己加上checked属性。需注意的是要先添加属性,再把数据赋值。

    getList() {
      axios.get(url.cartLists).then(res=>{
        let lists = res.data.cartList
         lists.forEach(shop=>{
           shop.checked = true
          shop.goodsList.forEach(good=>{
            good.checked = true
          })
        })
        this.lists = lists
      })
    }

这样数据api中就有了checked属性。接下来就好操作了。
1.商品
①动态绑定class<span class="check" :class="{checked:shop.checked}">
②绑定点击事件<div class="select-group js-select-group" @click="selectShop(shop)">

    selectGood(shop,good) {
      good.checked = !good.checked
      shop.checked = shop.goodsList.every(good =>{
        return good.checked
      })

2.店铺
前两步同上

    selectShop(shop) {
      shop.checked = !shop.checked
      shop.goodsList.forEach(good => {
        good.checked = shop.checked
      })
    }

3.全选
前两步同上,不过这里class绑定的是computed:allSelected

    allSelected: {
      get() {
        if(this.lists&&this.lists.length) {
          return this.lists.every(shop => {
            return shop.checked 
          })
        }
        return false
      },
      set(newVal) {
        this.lists.forEach(shop =>{
          shop.checked =newVal
          shop.goodsList.forEach(good =>{
            good.checked = newVal
          })
        })
      }
    }

点击事件:

    selectAll() {
      this.allSelected = !this.allSelected
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,911评论 1 32
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 简单小巧、渐进式、功能强大的技术栈 1.1.2 为什么学习...
    蔡华鹏阅读 8,708评论 0 3
  • 一、基础知识 1、创建vue实例 2、常用指令 {{}}实现数据绑定 v-model 双向数据绑定,用于input...
    飞飞廉阅读 3,725评论 0 0
  • Vuejs2.0购物车和地址选配学习笔记 按照慕课网的Vuejs2.0的学习视频零基础实践的一个demo如下:演示...
    fleeming阅读 2,944评论 0 0
  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 12,119评论 0 25

友情链接更多精彩内容