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

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


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

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

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

总结

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

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

相关文章
|
18天前
|
存储 编解码 小程序
抖音小程序开发中遇见的坑点
在抖音小程序开发中,需注意10大坑点:遵守小程序限制与规范;解决兼容性问题;优化数据加载速度;适应分享功能限制;处理视频播放挑战;优化图片加载显示;管理资源文件;提升用户体验;考虑安全性;及时更新维护。通过测试、优化和遵循官方文档,可克服这些问题,打造优质小程序。
|
28天前
|
小程序 前端开发 API
小程序全栈开发中的多端适配与响应式布局
【4月更文挑战第12天】本文探讨了小程序全栈开发中的多端适配与响应式布局。多端适配涉及平台和设备适应,确保统一用户体验;响应式布局利用媒体查询和弹性布局维持不同设备的布局一致性。实践中,开发者可借助跨平台框架实现多平台开发,运用响应式布局技术适应不同设备。同时,注意兼容性、性能优化和用户体验,以提升小程序质量和用户体验。通过这些方法,开发者能更好地掌握小程序全栈开发。
|
28天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
28天前
|
小程序 安全 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的身份认证与授权机制。身份认证包括手机号验证、微信登录和第三方登录,而授权机制涉及角色权限控制、ACL和OAuth 2.0。实践中,开发者可利用微信登录获取用户信息,集成第三方登录,以及实施角色和ACL进行权限控制。注意点包括安全性、用户体验和合规性,以保障小程序的安全运行和良好体验。通过这些方法,开发者能有效掌握小程序全栈开发技术。
|
28天前
|
小程序 前端开发 安全
小程序全栈开发中的跨域问题及其解决方案
【4月更文挑战第12天】本文探讨了小程序全栈开发中的跨域问题及其解决方案。跨域问题源于浏览器安全策略,主要体现在前后端分离、第三方服务集成和数据共享上。为解决此问题,开发者可采用CORS、JSONP、代理服务器、数据交换格式和域名策略等方法。实践中需注意安全性、兼容性和性能。通过掌握这些解决方案,开发者能更好地处理小程序的跨域问题,提升用户体验。
|
28天前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中PWA技术的应用,PWA结合Web的开放性和原生应用的性能,提供离线访问、后台运行、桌面图标和原生体验。开发者可利用Service Worker实现离线访问,Worker处理后台运行,Web App Manifest添加桌面图标,CSS和JavaScript提升原生体验。实践中需注意兼容性、性能优化和用户体验。PWA技术能提升小程序的性能和用户体验,助力开发者打造优质小程序。
|
10天前
|
小程序 前端开发 JavaScript
轻松学会微信小程序开发(一)
轻松学会微信小程序开发(一)
|
11天前
|
JSON 小程序 JavaScript
微信小程序开发1
微信小程序开发1
|
28天前
|
小程序 前端开发 持续交付
小程序全栈开发中的CI/CD流程与自动化部署
【4月更文挑战第12天】本文探讨了小程序全栈开发中的CI/CD流程和自动化部署,强调其在提升开发效率和代码质量上的重要性。持续集成和持续部署确保了代码的频繁集成与快速迭代。实践中,利用构建工具、测试框架和部署工具实现自动化,并借助代码审查工具保证代码质量。同时,注意安全性、性能和团队协作,以实现小程序的稳定运行和优质用户体验。
|
28天前
|
监控 小程序 前端开发
小程序全栈开发中的WebSocket实时通信实践
【4月更文挑战第12天】本文探讨了小程序全栈开发中WebSocket实时通信的实践,WebSocket作为实现双向实时通信的协议,其长连接特性和双向通信能力在实时聊天、推送、游戏和监控等场景中发挥关键作用。开发者需注意安全性、性能和兼容性问题,以优化用户体验并确保小程序稳定运行。通过掌握WebSocket,开发者能提升小程序的功能性和用户体验。