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


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 相关文章推荐
js滚动条多种样式,推荐
Feb 05 Javascript
Javascript中的常见排序算法
Mar 27 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
Sep 03 Javascript
jQuery Ajax请求后台数据并在前台接收
Dec 10 Javascript
ajax与json 获取数据并在前台使用简单实例
Jan 19 Javascript
Bootstrap表单简单实现代码
Mar 06 Javascript
js 用于检测类数组对象的函数方法
May 02 Javascript
分分钟学会vue中vuex的应用(入门教程)
Sep 14 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
Mar 05 Javascript
JavaScript实现秒杀时钟倒计时
Sep 29 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
Mar 03 Javascript
vue+canvas实现拼图小游戏
Sep 18 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为php增加openssl模块的方法
2011/06/14 PHP
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
Yii使用技巧大汇总
2015/12/29 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
七夕情人节丘比特射箭小游戏
2015/08/20 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
python数据类型_字符串常用操作(详解)
2017/05/30 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
Python3 A*寻路算法实现方式
2019/12/24 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
python操作toml文件的示例代码
2020/11/27 Python
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
2015年班长个人工作总结
2015/04/03 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
在项目中使用redis做缓存的一些思路
2021/09/14 Redis
pandas中关于apply+lambda的应用
2022/02/28 Python
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android