收藏
回答

购物车加入问题?

参考https://cloud.tencent.com/edu/learning/learn-1482-8557 里面的教程,购物车加1的问题。

谢谢解答!

const app = getApp()
const db = wx.cloud.database()
Page({
  data: {
    list:[],
    tops:[]
  },
  addCart(e) {
    const {item} = e.currentTarget.dataSet
    const i = app.globalData.carts.findIndex(v => v._id == item._id)
    if (i>-1) {
      //数量加1
      app.globalData.carts[i].num += 1
    } else {
      item.num = 1
      app.globalData.carts.push(item)
    }
  },
回答关注问题邀请回答
收藏

2 个回答

  • 伯爵-召耳先生
    伯爵-召耳先生
    02-11
    //index.js
    const app = getApp()
    const db = wx.cloud.database()
    Page({
      data: {
        list:[],
        tops:[],
      },
      addCart(e) {
        //购物车功能  
        //事件传递数据的一种方法
        const {item} = e.currentTarget.dataset
        //把商品的所有信息全部放到购物车里面,同时还要增加一个数量的显示
        //先查询数据库中有没有这个数据,如果有继续加1,如果没有单独赋值为1
        const i = app.globalData.carts.findIndex(v => v._id == item._id)
        if (i > -1) {
          //数量加1
          app.globalData.carts[i].num += 1
        } else {
          item.num = 1
          app.globalData.carts.push(item)
        }
        
      },
      onPullDownRefresh(){
        this.page = 0
        this.getList(true)
      },
      onReachBottom(){
        this.page +=1
        this.getList()
      },
      redirectToDetail(event,x){
        wx.navigateTo({
          url: '/pages/detail/detail?id='+event.currentTarget.id,
        })
        console.log(event.currentTarget.id)
      },
      
      toDetail(e){
        const id = e.currentTarget.id
        wx.navigateTo({
          url: '/pages/detail/detail?id='+id,
        })
        //console.log(id)
        },
        getList(isInit){
          const PAGE= 5
          wx.showLoading({
            title: '加载中',
          })
          db.collection('emall').skip(this.page * PAGE).limit(PAGE).get({
            success: res =>{
              console.log('xx',res.data)
    
    
              if (isInit){
                this.setData({
                  list: res.data
                })
              } else {
                this.setData({
                  list:this.data.list.concat(res.data)
                })
                wx.stopPullDownRefresh()
              }
              wx.hideLoading()
            }
          })
        },
    
    
    
    
      getTop(){//首页效果轮播图
        db.collection('emall').orderBy('count','desc').limit(4).get({
          success:res=>{
            console.log(res.data)
            this.setData({
              tops:res.data
            })
          }
        })
        //取emall中的内容count的值,进行降序显示,只显示4条记录。
      },
    
    
      
      onLoad() {
        this.page = 0
        this.getList(true)
        this.getTop()
      }
    })
    
    02-11
    赞同
    回复
  • undefined
    undefined
    02-11

    02-11
    赞同
    回复 12
    • 伯爵-召耳先生
      伯爵-召耳先生
      02-11
      改成小写之后错误如下:
      VM1908:1 thirdScriptError
      Cannot read property 'findIndex' of undefined; [Component] Event Handler Error @ pages/index/index#bound addCart
      TypeError: Cannot read property 'findIndex' of undefined


      谢谢!
      02-11
      回复
    • undefined
      undefined
      02-11回复伯爵-召耳先生
      说错了,Array有findIndex 这个对象。carts是数组吗
      02-11
      回复
    • 伯爵-召耳先生
      伯爵-召耳先生
      02-11回复undefined
      是的。我在app.js里面设了
      02-11
      回复
    • undefined
      undefined
      02-11回复伯爵-召耳先生
      打印一下item 的值是什么
      02-11
      回复
    • 伯爵-召耳先生
      伯爵-召耳先生
      02-11
      好像findIdex没有得到值。。
      02-11
      回复
    查看更多(7)
登录 后发表内容
问题标签