效(xiao)果圖實現(xian)以下功能一、 點(dian)擊分類項,切換右邊(bian)的(de)食品,并(bing)高亮自身這個實現(xian)比(bi)較(jiao)簡單,給一個states數組(zu),用于記錄每一項分類的(de)狀態(tai),點(dian)擊設(she)為true,wxml渲染時三目運算判斷即可。categoryStates = categoryStates.map ...
效果圖

實現以(yi)下功(gong)能
一、 點擊分類項,切換右邊的食品,并高亮自身
這個實現比較簡單(dan),給一個states數(shu)組,用于記錄每一項分(fen)類(lei)的(de)狀態,點擊設(she)為true,wxml渲染時三目運算判斷即可。
categoryStates = categoryStates.map(function (item, i) {if (index == i) {item = true;} else {item = false;}return item;});相應的(de)wxml文件,class="{{categoryStates[index] ? 'category-item-active' : ''}}"
二、 加(jia)減(jian)按鈕 初(chu)始只有(you)一個加(jia)號(hao) 點擊加(jia)號(hao)后(hou),相應(ying)商品(pin)數量(liang)+1,并出現減(jian)號(hao) 減(jian)至0時,減(jian)號(hao)消失,連同數量(liang)值
設計(ji)數組結構
cartData: {},它(ta)的鍵是Food表的objectId,值是數量。以下是(shi)js代碼實現add: function (e) {// 所(suo)點(dian)商品idvar foodId = e.currentTarget.dataset.foodId;console.log(foodId);// 讀取(qu)目前購(gou)物車(che)數據var cartData = that.data.cartData;// 獲取當(dang)前商品(pin)數(shu)量var foodCount = cartData[foodId] ? cartData[foodId] : 0;// 自增1后存回cartData[foodId] = ++foodCount;// 設值到data數據中that.setData({cartData: cartData});}在wxml文件中綁(bang)定數據如下
<view class="stepper"><!-- 減(jian)號 --><view class="symbol subtract" wx:if="{{cartData[item.objectId]}}">-</view><!-- 數(shu)量 --><view class="value">{{cartData[item.objectId]}}</view><!-- 加號 --><view class="symbol add" bindtap="add" data-food-id="{{item.objectId}}">+</view></view>上述代(dai)碼中,通過wx:if判(pan)斷當前商(shang)品的數(shu)量是否存在,無(wu)則不顯(xian)示(shi)減號(hao)按鈕;而(er)在加(jia)號(hao)按鈕旁要顯(xian)示(shi)的數(shu)量就(jiu)(jiu)是{{cartData[item.objectId]}};點擊事件傳遞(di)的foodId就(jiu)(jiu)是{{item.objectId}}
減法按鈕類似
subtract: function (e) {// 所點商品idvar foodId = e.currentTarget.dataset.foodId;// 讀取(qu)目前購物(wu)車數據var cartData = that.data.cartData;// 獲取當前商品數量(liang)var foodCount = cartData[foodId];// 自減1--foodCount;// 減到零(ling)了(le)就(jiu)直接(jie)移(yi)除if (foodCount == 0) {delete cartData[foodId]} else {cartData[foodId] = foodCount;}// 設(she)值到data數據中that.setData({cartData: cartData});}減法(fa)(fa)與加法(fa)(fa)基本(ben)類似(si),值得一提的是(shi),減法(fa)(fa)要判斷非(fei)負的合(he)法(fa)(fa)性(xing),所以將自減至零(ling)時,直(zhi)接(jie)將元(yuan)素通過delete操作移(yi)除,省去后續提交購物(wu)車(che)遍歷匯總(zong)的非(fei)零(ling)判斷的煩(fan)瑣(suo)。
Todo List 購物車(che)動畫 購物車(che)邏(luo)輯 提交數據到后端存儲