關於微信小程序外賣界面實現選購切換分類與數量加減功能開發步驟:小程序
效果圖後端
實現如下功能微信小程序
1、 點擊分類項,切換右邊的食品,並高亮自身
這個實現比較簡單,給一個states數組,用於記錄每一項分類的狀態,點擊設爲true,wxml渲染時三目運算判斷便可。數組
categoryStates = categoryStates.map(function (item, i) {
if (index == i) {
item = true;
} else {
item = false;
}
return item;
});
相應的wxml文件,class="{{categoryStates[index] ? 'category-item-active' : ''}}"微信
2、 加減按鈕
初始只有一個加號
點擊加號後,相應商品數量+1,並出現減號
減至0時,減號消失,連同數量值app
設計數組結構動畫
cartData: {},它的鍵是Food表的objectId,值是數量。
如下是js代碼實現
add: function (e) {
// 所點商品id
var foodId = e.currentTarget.dataset.foodId;
console.log(foodId);
// 讀取目前購物車數據
var cartData = that.data.cartData;
// 獲取當前商品數量
var foodCount = cartData[foodId] ? cartData[foodId] : 0;
// 自增1後存回
cartData[foodId] = ++foodCount;
// 設值到data數據中
that.setData({
cartData: cartData
});
}
在wxml文件中綁定數據以下設計
<view class="stepper">
<!-- 減號 -->
<view class="symbol subtract" wx:if="{{cartData[item.objectId]}}">-</view>
<!-- 數量 -->
<view class="value">{{cartData[item.objectId]}}</view>
<!-- 加號 -->
<view class="symbol add" bindtap="add" data-food-id="{{item.objectId}}">+</view>
</view>
上述代碼中,經過wx:if判斷當前商品的數量是否存在,無則不顯示減號按鈕;而在加號按鈕旁要顯示的數量就是{{cartData[item.objectId]}};點擊事件傳遞的foodId就是{{item.objectId}}code
減法按鈕相似xml
subtract: function (e) {
// 所點商品id
var foodId = e.currentTarget.dataset.foodId;
// 讀取目前購物車數據
var cartData = that.data.cartData;
// 獲取當前商品數量
var foodCount = cartData[foodId];
// 自減1
--foodCount;
// 減到零了就直接移除
if (foodCount == 0) {
delete cartData[foodId]
} else {
cartData[foodId] = foodCount;
}
// 設值到data數據中
that.setData({
cartData: cartData
});
}
減法與加法基本相似,值得一提的是,減法要判斷非負的合法性,因此將自減至零時,直接將元素經過delete操做移除,省去後續提交購物車遍歷彙總的非零判斷的煩瑣。
Todo List 購物車動畫 購物車邏輯 提交數據到後端存儲