微信小程序Demo-购物商城
发布时间:2021-09-06 09:13:28作者:顺晟科技点击:
前言
这算是我第二个写的微信小程序。相比起第一个运用了微信云开发的小程序,这一个小程序更加基础,我也在编写过程中对小程序有了一个更深的认识。
界面展示




我的demo中大致分为以下几个文件。images中存放用到的图片,pages存放页面代码等,以app等命名的文件则存放的整个小程序的一些全局变量以及环境变量。

部分代码展示
category.wxml
<view class="cartList">
<view wx:if="{{cart==false}}" class="cart-empty">
<image src="../../images/cart-empty.png" class="cart-empty-image"></image>
<view class="cart-empty-title">购物车暂无商品</view>
<button class="cart-empty-button">去逛逛</button>
</view>
<view wx:elif="{{cart}}" class="cart-empty">
<view wx:for="{{cart}}" wx:key="id">
<navigator class="cartItem" url="../goodsDetail/goodsDetail?id={{item.item.id}}" open-type="navigate"
hover-class="navigate-hover" bindtap="navigateToDetails">
<image class="itemImage" src="{{item.item.images[0]}}" mode="aspectFit" />
<view class="meta">
<view class="itemName">{{item.item.name}}</view>
<view class="itemPrice">价格:{{item.item.price}}</view>
</view>
</navigator>
<text class="itemPrice">数量:</text>
<image class="addRemove" src="../../images/remove.png" bindtap="removeItem" data-item="{{item}}"></image>
<text class="itemPrice">{{item.count}}</text>
<image class="addRemove" src="../../images/add.png" bindtap="addItem" data-item="{{item}}"></image>
</view>
<view class="buyView">
<view>总价:{{totalPrice}}</view>
<button class="buyButton" size="mini" bindtap="pay">结算</button>
<button class="clearButton" size="mini" bindtap="clear">清空</button>
</view>
</view>
</view>
在wxml中,我进行了对于当前购物车内是否有物品进行了条件判断。若购物车为空,则显示购物车为空的图片,若购物车内已有货物,则显示货物并可以调整货物数量以及清空购物车。清空购物车后,页面显示则还原为购物车为空的图片。
mycart.js
Page({
data: {
cart: [],
totalPrice: 0,
},
onLoad: function (options) {
this.getCartData();
},
onShow: function () {
this.getCartData();
},
getCartData: function () {
this.setData({
cart: getApp().globalData.cart
})
var total = 0;
var cart = this.data.cart;
cart.forEach(item => {
var price = item.item.price;
var count = item.count;
total = total + price * count;
});
this.setData({
totalPrice: total
})
},
removeItem: function (e) {
this.caculateCount(e, false);
},
addItem: function (e) {
this.caculateCount(e, true);
},
caculateCount: function (e, isAdd) {
var selectedItem = e.currentTarget.dataset.item;
var cart = getApp().globalData.cart;
cart.forEach(item => {
if (item.item.id == selectedItem.item.id) {
if (isAdd) {
item.count++;
} else {
item.count--;
if (item.count == 0) {
var index = cart.indexOf(item);
cart.splice(index);
}
}
}
})
this.getCartData();
},
navigateToDetails: function () {
wx.navigateTo({
url: \'../goodsDetail/goodsDetail\',
success: function (res) {
},
fail: function () {
},
complete: function () {
}
})
},
pay: function () {
wx.requestPayment({})
},
clear:function(){
var list = getApp().globalData.cart;
this.setData({
cart: [],
totalPrice: 0,
})
list.forEach(element => {
element.count = 0;
console.log(list);
return;
});
},
})
总结及不足
这一个小程序只是大致的demo。唯一值得一看的可能只有页面之间通过全局变量所进行的数据传递,以及购物车页面进行的逻辑判断。但这些恰恰是一个小程序编写最基本的技术。如果我能加入网络api的调用,可以使这一个demo再增色很多。并且若能调用网络api,则可以尝试加入后端,实现云端存储数据。这样会比使用小程序自带的云数据库,在程序运行速度上会更加方便快捷。
- 上一篇 : 微信小程序电商实战-首页(上)
- 下一篇 : crmeb打通版开源微信公众号小程序商城框架源码


