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


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 相关文章推荐
Javascript的IE和Firefox兼容性汇编
Jul 01 Javascript
jQuery 学习第六课 实现一个Ajax的TreeView
May 17 Javascript
js 操作符汇总
Nov 08 Javascript
javascript实现window.print()去除页眉页脚
Dec 30 Javascript
js+css实现导航效果实例
Feb 10 Javascript
JS实现简单路由器功能的方法
May 27 Javascript
javascript文件加载管理简单实现方法
Jul 25 Javascript
Javascript实现图片不间断滚动的代码
Jun 22 Javascript
angularJS深拷贝详解
Mar 23 Javascript
微信小程序如何调用json数据接口并解析
Jun 29 Javascript
js实现点击图片在屏幕中间弹出放大效果
Sep 11 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
Apr 10 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调用数据库的存贮过程!
2006/10/09 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
2017/08/11 PHP
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
纯js封装的ajax功能函数与用法示例
2018/05/14 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
js中对象和面向对象与Json介绍
2019/01/21 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
vue父子组件的通信方法(实例详解)
2019/11/10 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
python实现从字典中删除元素的方法
2015/05/04 Python
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
python爬虫实现获取下一页代码
2020/03/13 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
python脚本和网页有何区别
2020/07/02 Python
详解Python中第三方库Faker
2020/09/25 Python
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
公司庆典邀请函范文
2014/01/13 职场文书
护理专科自荐书范文
2014/02/18 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
初中生期末评语大全
2014/04/24 职场文书
青春雷锋观后感
2015/06/10 职场文书