微信小程序?qū)崿F(xiàn)購物車代碼實例詳解
其實購物車都是類似的實現(xiàn)方法,只不過小程序是有他的數(shù)據(jù)層和業(yè)務(wù)層,在這里把之前的做法記錄一下,分享出來也希望能給需要的小伙伴帶來參考價值在最開始的時候先從本地存儲中獲取購物車數(shù)據(jù),因為我們會切換頁面 在頁面切換的過程中需要實時重新加載購物車的數(shù)據(jù),所以我們把獲取的方法寫在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(); }
點擊按鈕更改購物車的數(shù)量:
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(); }
加載購物車數(shù)據(jù)的方法:
data: { cart: {}, address: {}, totalPrice: 0, categoryLength: 0, isAllChecked: true },
單個商品被選中時觸發(fā):
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 }); },
全選和反選觸發(fā)的事件:
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 }) },
點擊結(jié)算時觸發(fā):
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代碼,可能有一定小程序代碼經(jīng)驗的會看得輕松一點。以上便可以實現(xiàn)在對購物車的商品進(jìn)行加減和全選與反選,以及對商品進(jìn)行數(shù)量合計并計算價格。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
微信小程序?qū)崿F(xiàn)列表頁的點贊和取消點贊功能
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)列表頁的點贊和取消點贊功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11Javascript連接數(shù)據(jù)庫查詢并插入數(shù)據(jù)
這篇文章主要介紹了Javascript連接數(shù)據(jù)庫查詢并插入數(shù)據(jù),下面文章圍繞主題展開詳細(xì)內(nèi)容,具有一的參考價值,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助2022-03-03IScroll那些事_當(dāng)內(nèi)容不足時下拉刷新的解決方法
下面小編就為大家?guī)硪黄狪Scroll那些事_當(dāng)內(nèi)容不足時下拉刷新的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07js實現(xiàn)點擊圖片將圖片地址復(fù)制到粘貼板的方法
這篇文章主要介紹了js實現(xiàn)點擊圖片將圖片地址復(fù)制到粘貼板的方法,涉及js操作節(jié)點的技巧,非常具有實用價值,需要的朋友可以參考下2015-02-02JavaScript ECMA-262-3 深入解析(一):執(zhí)行上下文實例分析
這篇文章主要介紹了JavaScript ECMA-262-3 執(zhí)行上下文,結(jié)合實例形式詳細(xì)分析JavaScript ECMA執(zhí)行上下文相關(guān)概念、原理與操作注意事項,需要的朋友可以參考下2020-04-04