微信小程序外卖选购页实现切换分类与数量加减功能案例


Posted in Javascript onJanuary 15, 2019

本文实例讲述了微信小程序外卖选购页实现切换分类与数量加减功能。分享给大家供大家参考,具体如下:

关于微信小程序外卖界面实现选购切换分类与数量加减功能开发步骤:

效果图

微信小程序外卖选购页实现切换分类与数量加减功能案例

实现以下功能

一、 点击分类项,切换右边的食品,并高亮自身

这个实现比较简单,给一个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' : ''}}"

二、 加减按钮

初始只有一个加号

点击加号后,相应商品数量+1,并出现减号

减至0时,减号消失,连同数量值

设计数组结构

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}}

减法按钮类似

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
购物车动画
购物车逻辑
提交数据到后端存储

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
jquery $.ajax入门应用一
Nov 19 Javascript
Javascript实现返回上一页面并刷新的小例子
Dec 11 Javascript
一个检测表单数据的JavaScript实例
Oct 31 Javascript
JavaScript获取URL汇总
Jun 08 Javascript
谈谈Jquery中的children find 的区别有哪些
Oct 19 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
Nov 26 Javascript
JS实现给json数组动态赋值的方法示例
Mar 19 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
Jul 26 Javascript
JS异步错误捕获的一些事小结
Apr 26 Javascript
微信小程序实现同一页面取值的方法分析
Apr 30 Javascript
小程序如何定位所在城市及发起周边搜索
Feb 11 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
Sep 07 Javascript
微信 jssdk 签名错误invalid signature的解决方法
Jan 14 #Javascript
详解从react转职到vue开发的项目准备
Jan 14 #Javascript
node全局变量__dirname与__filename的区别
Jan 14 #Javascript
微信小程序时间轴实现方法示例
Jan 14 #Javascript
浅谈webpack devtool里的7种SourceMap模式
Jan 14 #Javascript
关于vue的npm run dev和npm run build的区别介绍
Jan 14 #Javascript
用npm-run实现自动化任务的方法示例
Jan 14 #Javascript
You might like
解析PHP高效率写法(详解原因)
2013/06/20 PHP
解析PHP提交后跳转
2013/06/23 PHP
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
jQuery插件扩展操作入门示例
2017/01/16 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
2019/08/20 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
Opencv实现抠图背景图替换功能
2019/05/21 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
AUC计算方法与Python实现代码
2020/02/28 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
.NET概念性的面试题
2012/02/29 面试题
STP的判定过程
2012/10/01 面试题
建筑工程专业毕业生自荐信
2013/10/19 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
公司会议策划方案
2014/05/17 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
好人好事新闻稿
2015/07/17 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
pytorch中的model.eval()和BN层的使用
2021/05/22 Python