<noframes id="bhrfl"><address id="bhrfl"></address>

    <address id="bhrfl"></address>

    <noframes id="bhrfl"><address id="bhrfl"><th id="bhrfl"></th></address>

    <form id="bhrfl"><th id="bhrfl"><progress id="bhrfl"></progress></th></form>

    <em id="bhrfl"><span id="bhrfl"></span></em>

    全部
    常見問題
    產品動態
    精選推薦

    【實戰教程】微信小程序購物車功能實現,代碼詳解!

    管理 管理 編輯 刪除

    實際上,購物車的實現方式在大體上是相似的,不過小程序有其特有的一套數據層和業務層架構。在此,我將記錄并分享之前我們采用的方法,希望對有需求的朋友們能提供一些參考價值。

    在最開始的時候,我們會從本地存儲中獲取購物車的數據。因為我們會頻繁地切換不同的頁面,而在頁面切換的過程中,我們需要實時地重新加載購物車的最新數據。因此,我們將獲取數據的方法寫在onShow函數中,而不是onLoad函數中:

    onShow: function () {
      const cart = wx.getStorageSync("cart");
      let address = wx.getStorageSync("address") ;
      console.log(address);
      this.setData({
       address, cart
      })
      this.loadCarts();
      this.countAll();
     }

    點擊按鈕更改購物車的數量:

    handleNumEdit(e) {
      const { operator, goodsid } = e.target.dataset;
      let { cart } = this.data;
      cart[goodsid].count += (+operator);
      if (cart[goodsid].count < 1) {
       cart[goodsid].count = 1;
       wx.showModal({
        title: '提示',
        content: '您確定要刪除嗎',
        showCancel: true,
        cancelText: '取消',
        cancelColor: '#000000',
        confirmText: '確定',
        confirmColor: '#3CC51F',
        success: (result) => {
         if (result.confirm) {
          delete cart[goodsid];
          this.loadCarts();
          this.countAll();
         } else {
         }
        }
       });
      } else if (cart[goodsid].count > cart[goodsid].goods_number) {
       cart[goodsid].count = cart[goodsid].goods_number;
       wx.showToast({
        title: '沒有庫存了',
        icon: 'none',
        duration: 1500,
        mask: true
       });
      }
      this.loadCarts();
      this.countAll();
     }

    加載購物車數據的方法:

    data: {
      cart: {},
      address: {},
      totalPrice: 0,
      categoryLength: 0,
      isAllChecked: true
     },

    單個商品被選中時觸發:

    loadCarts() {
      let { cart } = this.data;
      let isAllChecked = true;
      for (const key in cart) {
       if (cart.hasOwnProperty(key)) {
        const element = cart[key];
        if (!element.isChecked) {
         isAllChecked = false;
         break;
        }
       }
      }
      this.setData({
       cart,
       isAllChecked
      });
     },

    全選和反選觸發的事件:

    handleItemChecked(e) {
      let { goodsid } = e.target.dataset;
      let { cart } = this.data;
      let { isChecked } = cart[goodsid];
      cart[goodsid].isChecked = !isChecked;
      let checkedLength = 0;
      for (const key in cart) {
       if (cart.hasOwnProperty(key)) {
        if (cart[key].isChecked) {
         checkedLength++;
        }
       }
      }
      const isAllChecked = checkedLength == Object.keys(cart).length;
      this.countAll();
      this.setData({
       isAllChecked
      })
     },

    點擊結算時觸發:

    handleItemAllChecked() {
      let { isAllChecked } = this.data;
      let { cart } = this.data;
      isAllChecked = !isAllChecked;
      for (const key in cart) {
       if (cart.hasOwnProperty(key)) {
        cart[key].isChecked = isAllChecked;
       }
      }
      this.setData({
       isAllChecked,
       cart
      })
      this.countAll();
     },

    純js代碼,可能有一定小程序代碼經驗的會看得輕松一點。以上便可以實現在對購物車的商品進行加減和全選與反選,以及對商品進行數量合計并計算價格。

    請登錄后查看

    CRMEB-慕白寒窗雪 最后編輯于2023-12-07 15:03:43

    快捷回復
    回復
    回復
    回復({{post_count}}) {{!is_user ? '我的回復' :'全部回復'}}
    排序 默認正序 回復倒序 點贊倒序

    {{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level }}

    作者 管理員 企業

    {{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
    {{item.is_suggest == 1? '取消推薦': '推薦'}}
    沙發 板凳 地板 {{item.floor}}#
    {{item.user_info.title || '暫無簡介'}}
    附件

    {{itemf.name}}

    {{item.created_at}}  {{item.ip_address}}
    打賞
    已打賞¥{{item.reward_price}}
    {{item.like_count}}
    {{item.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復

    {{itemc.user_info.nickname}}

    {{itemc.user_name}}

    回復 {{itemc.comment_user_info.nickname}}

    附件

    {{itemf.name}}

    {{itemc.created_at}}
    打賞
    已打賞¥{{itemc.reward_price}}
    {{itemc.like_count}}
    {{itemc.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復
    查看更多
    打賞
    已打賞¥{{reward_price}}
    5805
    {{like_count}}
    {{collect_count}}
    添加回復 ({{post_count}})

    相關推薦

    快速安全登錄

    使用微信掃碼登錄
    {{item.label}} 加精
    {{item.label}} {{item.label}} 板塊推薦 常見問題 產品動態 精選推薦 首頁頭條 首頁動態 首頁推薦
    取 消 確 定
    回復
    回復
    問題:
    問題自動獲取的帖子內容,不準確時需要手動修改. [獲取答案]
    答案:
    提交
    bug 需求 取 消 確 定
    打賞金額
    當前余額:¥{{rewardUserInfo.reward_price}}
    {{item.price}}元
    請輸入 0.1-{{reward_max_price}} 范圍內的數值
    打賞成功
    ¥{{price}}
    完成 確認打賞

    微信登錄/注冊

    切換手機號登錄

    {{ bind_phone ? '綁定手機' : '手機登錄'}}

    {{codeText}}
    切換微信登錄/注冊
    暫不綁定
    亚洲欧美字幕
    CRMEB客服

    CRMEB咨詢熱線 咨詢熱線

    400-8888-794

    微信掃碼咨詢

    CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
    返回頂部 返回頂部
    CRMEB客服