点餐小程序实战教程07-点餐功能开发

news2024/10/2 1:24:28

目录

  • 1 菜品列表功能
  • 2 给分类添加排序字段
  • 3 给数据列表设置筛选条件
  • 4 实现数量选择
  • 5 全局变量定义
  • 6 选购数量初始化
  • 总结

上一篇我们介绍了菜品分类功能,主要是使用侧边选项卡组件来实现。在点餐场景中,我们在选中分类的时候是希望看到分类下的菜品,这样点击分类的时候就需要和菜品列表有一个联动的效果。我们本篇介绍一下菜品列表如何实现以及如何和分类进行联动。

1 菜品列表功能

如果按照传统开发,像这种列表功能就需要用到循环结构,低代码中都是用组件进行实现,因此选择合适的组件是比较重要的。那需要选择哪个组件来实现呢?我们的列表功能一般都是使用数据列表组件来构建。

打开我们的应用,在右侧的组件区域找到数据列表组件,拖入编辑区
在这里插入图片描述
直接拖入编辑器是不行的,这样没有形成一个组件嵌套关系,我们需要具体放入到哪里呢?就像搭建积木一样,是要放入到侧边选项卡的内容插槽里
在这里插入图片描述

数据列表会根据所选择的数据源自动的生成页面,在生成时还有各种模板可供选择,这里我们选择菜品信息数据源,模板选择商品模板
在这里插入图片描述
现在是罗列出了所有的商品,我们显示是要先显示默认选择这个分类

2 给分类添加排序字段

目前左侧的分类不是我们希望的,我们希望热销排在第一位,选择侧边选项卡组件绑定的category变量,设置排序字段,按照序号升序排列
在这里插入图片描述

3 给数据列表设置筛选条件

如果数据列表未设置筛选条件的情况下就把数据全部查出来,我们需要根据菜品分类的选中值过滤数据。选中数据列表组件,点击数据筛选属性
在这里插入图片描述
条件我们选择菜品分类字段
在这里插入图片描述
关系的话我们选择相等
在这里插入图片描述
值的话切换到fx表达式,我们接收侧边栏选项卡的选中值
在这里插入图片描述
在这里插入图片描述
这样就实现了数据过滤
在这里插入图片描述

4 实现数量选择

点餐的话一般有个数量选择的组件,点击+号数量加1,点击-号数量减1。如果没有点餐的时候只有一个+号,如果减到0的时候也只有一个+号,如果数量大于0出现减号,点击减号的时候数量减一

这里我们先修改一下图标,修改为+号
在这里插入图片描述
然后我们添加一个文本组件用来显示数量,一个图标用来显示减号
在这里插入图片描述
因为数量有可能是双位数,我们给文本组件一个固定的宽度,选中文本组件,切换到样式,设置宽度为20px,居中对齐
在这里插入图片描述
现在如果点击+号和-号是没有任何作用的,我们思考一下要怎么写这个逻辑。目前我们的列表是从菜品信息读取出来,但是菜品信息的字段里并没有一个购买数量的字段,那么我们应该主动的给列表增加这么一个字段。

字段也肯定不能在数据源中添加,因为这个字段是点餐的时候才需要,菜品展示的时候不需要。这就需要在数据查询出来后,我们再给列表增加一列。

需要先定义一个全局变量,showlist_temp用来改变我们的列表信息

5 全局变量定义

点击代码区,新建一个全局变量
在这里插入图片描述
选择新建自定义变量
在这里插入图片描述
输入变量名showlist_temp,类型选择数组
在这里插入图片描述

6 选购数量初始化

首次进入小程序,所有的商品的购买数量应该都为0,我们需要给列表的每一行数据增加一个count字段,并且设置默认值为0

在代码区新建一个javascript方法
在这里插入图片描述
在数据列表的数据加载完毕后,我们可以调用这个方法,选中数据列表,设置加载成功的事件
在这里插入图片描述
调用我们的自定义方法
在这里插入图片描述
然后在自定义代码中输入如下代码

export default function({event, data}) {
   const list = event.detail.data
   console.log(list)
   $w.app.dataset.state.showlist_temp = list.map(item=>({...item,count:0}))
}

代码的第一行我们先定义了一个常量用来接收我们数据列表组件的返回值,这里通过事件对象的data属性来获取

第二行我们调用数组的map方法来重新构造一下元素,增加了count字段,三个点表示对象属性的展开,这样保留了原对象的属性而且增加了一个新属性

构造好新的列表后我们把数据列表的循环展示重新绑定一下,绑定为我们的新变量
在这里插入图片描述
因为新的变量中已经存在了数量这个字段,就可以绑定到我们的文本字段上
在这里插入图片描述

$w.item_listView1.count

经过上述步骤点餐的初始化状态我们已经设置完毕了,后续就要实现购物车的功能,点击+号可以将菜品放入购物车,而且可以修改购物车中菜品的数量。

总结

本篇我们介绍了数据列表的使用,介绍了侧边选项卡和数据列表联动的效果,也介绍了数量选择效果的搭建过程。

总体上如果使用组件进行编程,就是要考虑数据结构如何构造,然后算法如何实现,其实可视化编程和纯代码的编程从编程形式上并不是有太大的区别,如果非要说有区别就是低代码的组件效果是所见即所得的,纯代码每次你要编译一下在浏览器里看效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1072325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试官:听说你很懂SpringMVC,那讲讲其内部对于请求的处理吧!

本系列文章皆在分析SpringMVC的核心组件和工作原理,让你从SpringMVC浩如烟海的代码中跳出来,以一种全局的视角来重新审视SpringMVC的工作原理. 作者:毅航 在过去的很长一段时间内,笔者对SpringMVC中的核心控制器DispatcherServle…

《鱿鱼游戏》杀入体验店 SandboxVR未能复制神话

曾经火爆全网的剧集《鱿鱼游戏》这回真的变成游戏了,而且还是能身临其境去玩的那种。 9月底,沉浸式游戏社交公司Sandbox VR与全球知名流媒体Netflix合作,将《鱿鱼游戏》搬入VR体验店,用线下场地VR的方式,重现123木头人…

jvm--执行引擎

文章目录 1. 执行引擎的工作流程2. 解释器、JIT及时编译器3. 热点代码及探测技术4. HotSpotVM 中 JIT 分类 执行引擎属于 JVM 的下层,里面包括解释器、及时编译器、垃圾回收器 JVM 的主要任务是负责 装载字节码到其内部,但字节码并不能够直接运行在操作…

vite+vue3+ts中使用require.context | 报错require is not defined | 获取文件夹中的文件名

vitevue3ts中使用require.context|报错require is not defined|获取文件夹中的文件名 目录 vitevue3ts中使用require.context|报错require is not defined|获取文件夹中的文件名一、问题背景二、报错原因三、解决方法 一、问题背景 如题在vitevue3ts中使用required.context时报…

JDK21 要来了,,你不会还在用 Java 8吧!

目前 Java 的最新稳定版是 JDK 20,但这是个过渡版,JDK21就是 LTS 版的了,也快要发布了,在今年9月份(也就是2023年9月)就要正式发布了。 但是,猜都不用猜,你肯定还在用 Java 8 吧&…

【密评】商用密码应用安全性评估从业人员考核题库(七)

商用密码应用安全性评估从业人员考核题库(七) 国密局给的参考题库5000道只是基础题,后续更新完5000还会继续更其他高质量题库,持续学习,共同进步。 1501 判断题 在公钥密码体制中,使用接收方的公钥加密的消…

MySQL通用查询日志 general query log 详解

通用查询日志(general query log)用来记录用户的所有操作,包括启动和关闭MySQL服务、所有用户的连接开始时间和截止时间、发送给MySQL数据库服务器的所有SQL指令等。当我们的数据发生异常时,查看通用查询日志,还原操作…

Oracle笔记-对ROWNUM的一次理解(简单分页)

此博文记录时间:2023-05-05,发到互联网上是2023-10-09 这个在分页里面用得比较多,在MySQL中,通常使用limit去操作,而去感觉比较简单,Oracle中无此关键字。 通过查阅资料后,要实现分页需要用到…

论文阅读笔记(Clover: 计算与存储被动分离的分布式键值存储系统)

关于Disaggregating Persistent Memory and Controlling Them Remotely: An Exploration of Passive Disaggregated Key-Value Stores这篇论文的笔记 原文链接 提出背景 传统的分布式存储系统中,每个节点都会包含计算和存储两个部分,一个节点既可以访…

分割等和子集

题目链接 分割等和子集 题目描述 注意点 数组 nums 非空数组 nums 只包含正整数 解答思路 最初想到的是根据回溯剪枝解决本题,如果数组大小小于2,则肯定不能找到分割等和子集,除此以外,如果数组之和sum不能被2整除&#xff0…

VMvare虚拟机安装国产麒麟V10桌面操作系统

一、系统下载 进入银河麒麟官网:https://www.kylinos.cn/ 选择桌面操作系统,然后进入操作系统版本选择页面,选择银河麒麟桌面操作系统V10 选择后,进入系统介绍页面,然后点击申请试用 点击后进入申请页面&#xf…

Apache Solr9.3 快速上手

Apache Solr 简介 Solr是Apache的顶级开源项目,使用java开发 ,基于Lucene的全文检索服务器。 Solr比Lucene提供了更多的查询语句,而且它可扩展、可配置,同时它对Lucene的性能进行了优化。 安装 下载 : 下载地址解压 : tar -zxv…

uniapp apple 苹果登录 离线本地打包

官方文档 uni-app官网 文档写的不全,没有写离线打包流程 加lib 签名里带 sign in with apple hbuilder开关 代码 测试代码,获取app里所有的provider uni.getProvider({service: oauth,success: function (res) {console.log(res.provider)uni.showT…

ctfshow-web4(文件包含日志注入)

像web3那样使用php伪协议,回显error 看了看提示:日志注入 文件包含 使用Wappalyzer查看一下,使用的中间件是Ngnix 日志包含漏洞的成因还是服务器没有进行严格的过滤 ,导致用户可以进行任意文件读取, 但是前提是服务器…

月报总结|Moonbeam 9月份大事一览

相信社区的小伙伴都过了一个圆满的中秋节,月圆人团圆,以月光代表生态的Moonbeam网络也如月亮一般,从始至终都在波卡。 9月,USDC上线波卡增加流动性、Moonbeam治理界面简化促进社区参与、Grant发放引爆Moonbeam Ignite再次回归、M…

QT基础入门——Qt事件(五)

前言: 事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等&#x…

(一)Apache log4net™ 手册 - 介绍

0、相关概念 Log4j 几乎每个大型应用程序都包含自己的日志记录或跟踪 API。根据这一规则,E.U. SEMPER 🌹项目决定编写自己的跟踪 API。那是在 1996 年初。经过无数次的增强、几个化身和大量的工作,API 已经发展成为 log4j —— 一个流行的 Ja…

开源音乐播放器!

导读音乐是生活的一部分。维基百科关于音乐发展历史的文章有这样一段不错的描述说:“全世界所有的人们,包括哪怕是最孤立、与世隔绝的部落,都会有自己的特色音乐……”好吧,我们开源人就构成了一个部落。我建议我们的“音乐形式”…

halcon 算子shape_trans

shape_trans 函数原型:shape_trans(Region : RegionTrans : Type : ) 函数作用:变换区域的形状 参数列表: Region(in):被变换的区域 RegionTrans(out):变换后的区域…

【SmartApi】内网局域网API调试开发工具下载使用说明-v1.0.1

最近的一些年经常在内网环境下进行开发工作,尤其是比较敏感的单位或者组织是有严格规定不能使用哪些软件或者是不能访问外网的。 但开发工作需要的各种软件工具又因为一些营销策略而要联网激活,这就和组织单位的要求相悖了。于是就萌发了开发内网局域网软…