微信小程式的購物車功能
購物車
資料結構
Let list = [
{
id: 1,
goods_name: "九江雙蒸 29.5°地道米酒 500ml*12瓶"
num: 2,
price: 120
},
{
id: 1,
goods_name: "天龍泉35度 500ml*6瓶"
num: 1,
price: 90
},
]
單選
<view wx:for='{{list}}' wx:key='index' class='card'>
<radio checked="{{item.isSelect}}"
color="#c50c1e"
bindtap="radioSelect"
id='{{index}}'
data-isSelect='{{item.isSelect|| false}}'>
</radio>
</view>
對應的單選功能
// 單選
radioSelect(e) {
let index = e.currentTarget.id;
this.setData({
['list['+index+'].isSelect']: !e.currentTarget.dataset.isSelect
});
this.selectAllCheck(); // 是否全選
},
全選
<radio checked="{{isSelectAll}}"
color="#c50c1e"
bindtap="radioSelectALL">全選
</radio>
對應的全選功能
// 全選
radioSelectALL() {
let isSelectAll = !this.data.isSelectAll;
let list = this.data.list;
list.forEach(item =>item.isSelect = isSelectAll);
this.setData({
isSelectAll,
list
})
},
全選檢查// 單選要檢查是否已單選完所有選項
// 是否全選
selectAllCheck() {
let isSelectAll = !this.data.list.filter(item =>!item.isSelect).length;
if (this.data.isSelectAll != isSelectAll){
this.setData({
isSelectAll
})
}
},
計價
<view style="color:red;">共計:{{total||0.00}}元</view>
對應計價功能
函式reduce有兩個位置引數,第一個是累加器,另一個是迭代值,它返回累加值
// 計價
calculateTotalPrice() {
let total = 0;
let list = this.data.list.filter(item =>item.isSelect);
total = list.reduce((sum, x) => sum + x.price*x.num, 0);
this.setData({
total: total.toFixed(2)
})
},
先篩選獲取已選的選項,總價為選項的單價*數量,累計起來 =>或是這樣:
// 計價
calculateTotalPrice() {
let total = 0;
let goods = this.data.list;
for(let i in goods) {
if (goods[i].isSelect) {
total+= goods[i].price*goods[i].num;
}
}
this.setData({
total: total.toFixed(2)
})
},
商品數量增減
<view class='num-box'>
<p bindtap='increaseOrDecrease' id='-1' data-index='{{index}}'>-</p>
<input value="{{item.num}}"
placeholder="1"
type='number'
maxlength="3"
bindblur="userInput"
data-index="{{index}}">
</input>
<p bindtap='increaseOrDecrease' id='1' data-index='{{index}}'>+</p>
</view>
對應的加減
// 數量增減按鈕
increaseOrDecrease(e) {
let index = e.currentTarget.dataset.index;
let item = this.data.list[index];
let number = ~~item.num + ~~e.currentTarget.id;
this.setData({
['list['+index+'].num']: number>0?number:1
});
// TODO 提交後臺更新數量...
// 如果選中就重新計價...
},
// 數量輸入
userInput(e) {
let number = e.detail.value;
let index = e.currentTarget.dataset.index;
if (!number||number<1||isNaN(number)) number = 1; // 輸入校驗
this.setData({
['list['+index+'].num']: number
});
// TODO 提交後臺更新數量...
// 如果選中就重新計價...
},
刪除商品
// 刪除
deleteCartItem() {
// 是否勾選有商品....
wx.showModal({
cancelColor: '提示!',
content: '是否要刪除該商品?',
success: res =>{
if (res.confirm) {
wx.showLoading({title:'正在刪除'});
let list = this.data.list;
for (let i = 0; i < list.length; i++) {
if (list[i].isSelect) {
// TODO 請求後臺刪除...
list.splice(i, 1);
i--;
}
}
this.setData({list});
}
}
})
},
相關文章
- 做一個微信購物小程式需要多少錢?
- flutter 購物車功能Flutter
- 微信小程式複製功能微信小程式
- Python入門基礎—購物車小程式Python
- 微信小程式 遮罩功能實現微信小程式遮罩
- vue例項-購物車功能Vue
- 微信小程式實現換膚功能微信小程式
- 微信小程式基礎功能解析微信小程式
- 微信小程式開發常用功能微信小程式
- Android實現商城購物車功能Android
- Vue實現簡單的購物車功能Vue
- python之購物車程式Python
- vue2.0實現購物車功能Vue
- SAP Commerce Cloud Spartacus UI 的購物車 Cart 功能CloudUI
- 微信小程式微信小程式
- 煙臺小程式開發——微信小程式功能特點都有哪些微信小程式
- 微信小程式可以線上繳物業費?物業繳費小程式怎麼做?微信小程式
- 微信小程式如何實現自動退款功能?微信小程式
- 微信小程式頁面功能-----標籤切換微信小程式
- 微信小程式功能-----基礎輪播圖配置微信小程式
- 微信小程式代理模式開發系統功能微信小程式模式
- 微信小程式 簡易搜尋功能實現微信小程式
- 微信小程式開發抖音去水印功能微信小程式
- 微信小程式 傳送模板訊息的功能實現微信小程式
- 『改良版青桔單車』微信小程式微信小程式
- 微信小程式變現駛入快車道微信小程式
- 微信小程式功能之全屏滾動效果的實現程式碼微信小程式
- 微信小程式小技巧微信小程式
- 微信小程式實現軌跡回放,微信原生小程式,基於uniapp的小程式?微信小程式APP
- 微信小程式(1) 微信小程式TLS版本大於1.2微信小程式TLS
- 直播網站程式原始碼,採用Redis實現購物車功能網站原始碼Redis
- python-購物車程式練習Python
- 微信小程式開發系列七:微信小程式的頁面跳轉微信小程式
- 微信小程式開發系列教程三:微信小程式的除錯方法微信小程式除錯
- 微信小程式開發系列二:微信小程式的檢視設計微信小程式
- 10行程式碼實現微信小程式支付功能,使用小程式雲開發實現小程式支付功能(行程微信小程式
- 微信小程式左滑刪除功能開發案例微信小程式
- 微信小程式-實現實時聊天功能 前端部分微信小程式前端