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


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 相关文章推荐
33种Javascript 表格排序控件收集
Dec 03 Javascript
js 弹出菜单/窗口效果
Oct 30 Javascript
图片上传插件jquery.uploadify详解
Nov 15 Javascript
js获取select标签的值且兼容IE与firefox
Dec 30 Javascript
jQuery DOM操作实例
Mar 05 Javascript
js实现鼠标划过给div加透明度的方法
May 25 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
Jan 17 Javascript
socket.io学习教程之深入学习篇(三)
Apr 29 Javascript
详解微信小程序设置底部导航栏目方法
Jun 29 Javascript
Angular使用操作事件指令ng-click传多个参数示例
Mar 27 Javascript
JavaScript插入排序算法原理与实现方法示例
Aug 06 Javascript
uni-app 支持多端第三方地图定位的方法
Jan 03 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中static关键字原理的学习研究分析
2011/07/18 PHP
简单的php写入数据库类代码分享
2011/07/26 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
微信小程序 动态绑定事件并实现事件修改样式
2017/04/13 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
Python微信操控itchat的方法
2019/05/31 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
python如何查看网页代码
2020/06/07 Python
Python实现自动签到脚本的示例代码
2020/08/19 Python
如何用Python绘制3D柱形图
2020/09/16 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
一些Solaris面试题
2013/03/22 面试题
厨房工作人员岗位职责
2013/11/15 职场文书
群众路线批评与自我批评
2014/02/06 职场文书
前处理组长岗位职责
2014/03/01 职场文书
竞选卫生委员演讲稿
2014/04/28 职场文书
法制宣传口号
2014/06/16 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang
解决sql server 数据库,sa用户被锁定的问题
2021/06/11 SQL Server
Python基础 括号()[]{}的详解
2021/11/07 Python
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript