毕业设计记录
微信小程序 点餐功能实现
点餐功能的需求:
- 单选,全选和取消,而且会随着菜品选取计算总价(单选,全选功能暂时保留)
- 单个菜品购买数量的增加和减少
点餐功能需要的数据:
首先是一个菜单列表——carts,属性在数据库中定义
左下角需要的全选按钮 需要一个字段 selectAllStatus 表示是否全选了
右下角 显示 点单总价
小程序中var ,let ,const三者区别:
var | let | const |
---|---|---|
var申明的变量是全局变量 | let声明的变量是局部变量 | const声明一个只读的常量。一旦声明,常量的值就不能改变 |
var:
- var申明的变量是全局变量,其作用域为所在的函数内
- var命令会发生”变量提升“现象,即变量可以在声明之前使用
let:
- let声明的变量是局部变量,该变量只会在最靠近{ }内的范围有效,出了{}之后,该变量就不能用了,否则会报该变量未定义的错误
- let声明的变量只在它所在的代码块有效
- for循环的计数器,就很合适使用let命令
- let不允许在相同作用域内,重复声明同一个变量
const:
- const声明一个只读的常量。一旦声明,常量的值就不能改变
- const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值,只声明不赋值,就会报错
- const声明的常量,也与let一样不可重复声明
代码实现
1.初始化
1 | // pages/menus/menus.js |
菜单列表数据我们一般是通过请求服务器拿到的数据,所以我们放在生命周期函数里给 carts 赋值。想到每次进到菜单都要获取菜单的最新状态,而onLoad和onReady只在初始化的时候执行一次,所以我需要把请求放在 onShow函数里。
2.wxml布局
与前端页面绑定数据
1 | <!--pages/menus/menus.wxml--> |
3.计算总价
总价 = 选中的菜品1的 价格 * 数量 + 选中的菜品2的 价格 * 数量 + …
根据公式,可以得到
1 | //计算总价 |
页面中的其他操作会导致总价格变化的都需要调用该方法。
4.选择事件
点击时选中,再点击又变成没选中状态,其实就是改变 food_selected 字段。通过 data-index=”“ 把当前商品在列表数组中的下标传给事件。
1 | //选择事件 |
5.全选事件
全选就是根据全选状态 selectAllStatus 去改变每个商品的 food_selected
1 | selectAll(e){ |
6.增减数量
点击+号,num加1,点击-号,如果num > 1,则减1
1 | //增减数量 逻辑 ---> 点击+号,num加1,点击-号,如果num > 1,则减1 |