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


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 相关文章推荐
关于图片验证码设计的思考
Jan 29 Javascript
Json对象替换字符串占位符实现代码
Nov 17 Javascript
JavaScript定时器详解及实例
Aug 01 Javascript
js Calender控件使用详解
Jan 05 Javascript
JavaScript调用浏览器打印功能实例分析
Jul 17 Javascript
jQuery Mobile中的button按钮组件基础使用教程
May 23 Javascript
js添加千分位的实现代码(超简单)
Aug 01 Javascript
node.js中module.exports与exports用法上的区别
Sep 02 Javascript
浅谈vue-router2路由参数注意的问题
Nov 08 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
Apr 27 Javascript
vue如何搭建多页面多系统应用
Jun 17 Javascript
解决vue初始化项目一直停在downloading template的问题
Nov 09 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
JAVA/JSP学习系列之六
2006/10/09 PHP
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
菜鸟javascript基础整理1
2010/12/06 Javascript
Dom操作之兼容技巧分享
2011/09/20 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
js制作简易年历完整实例
2015/01/28 Javascript
Jquery中的$.each获取各种返回类型数据的使用方法
2015/05/03 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
Angular路由简单学习
2016/12/26 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
2017/03/23 jQuery
vue v-on监听事件详解
2017/05/17 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
2018/12/13 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
2019/05/08 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
Python在不同目录下导入模块的实现方法
2017/10/27 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
解决Django中多条件查询的问题
2019/07/18 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
C语言开发工程师测试题
2016/12/20 面试题
求职者怎样写自荐信
2014/04/13 职场文书
团结演讲稿范文
2014/05/23 职场文书
装饰公司活动策划方案
2014/08/23 职场文书