家政维修平台实战13动态显示价格

现在我们已经搭建好了详情页,除了显示基本信息外,页面还要显示不同的规格。在选择规格组合的时候价格会有变化,本篇我们介绍这种需要动态切换功能的开发过程。
在这里插入图片描述

1 创建变量

首先我们需要创建一个内置数据表查询来根据当前的服务项目去找到我们的服务规格信息

在代码区点击点击新建
在这里插入图片描述
选择新建内置数据表查询
在这里插入图片描述
选择服务规格表,触发方式选择入参变化时自动执行
在这里插入图片描述
查询条件设置为服务项目ID等于我们的URL参数
在这里插入图片描述
排序方式设置为规格类型升序、规格值升序
在这里插入图片描述
每页大小我们设置为200,页码设置为1
在这里插入图片描述

2 搭建布局

变量定义好之后,就需要搭建布局,像这种可以进行切换选择的我们通常使用标签选择组件来搭建

先在价格下边添加普通容器,里边添加两个标签选择组件
在这里插入图片描述
选中第一个标签选择,修改选择方式为单选
在这里插入图片描述
点击选项旁边的fx,我们来绑定一下数据
在这里插入图片描述
我们利用Set去重,只保留不相同的内容,表达式如下

Array.from(new Set(($w.guige.data.records.map(item=>item.gglx)))).map(item=>({
    label:item,
    value:item
}))

在这里插入图片描述
然后关闭显示标题
在这里插入图片描述
按照同样的方法配置第二个标签选择
在这里插入图片描述

3 动态显示价格

规格搭建好了之后,接下来就需要根据不同的规格来显示价格,我们创建两个变量用来显示原价和现价

在这里插入图片描述
在这里插入图片描述
在我们原来的价格的文本组件,修改一下内容,使用短路运算符来添加现价的显示
在这里插入图片描述

"¥"+($w.page.dataset.state.currentPrice||$w.dataView1.record.price)+$w.dataView1.record.unit

在现价的旁边再添加一个文本组件,用来显示原价
在这里插入图片描述
设置样式,布局设置为横向排列,垂直居中
在这里插入图片描述
新添加的文本组件绑定我们的原价的变量
在这里插入图片描述
绑定条件展示
在这里插入图片描述
这样只有在有原价的情况下这个文本组件才显示,通常我们这种原价是要有一条中划线,点击CSS添加具体的样式
在这里插入图片描述

:root {
  font-size: 16px;
  line-height: 18px;
  color: #999;
  text-decoration: line-through;
}

4 设置值改变事件

我们的价格字段设置好之后,在选择不同的组合的时候就需要显示不同的价格,在代码区新建一个javascript方法
在这里插入图片描述
输入如下的代码

export default function({event, data}) {

  const selectedType = $w.tagSelect1.value;
const selectedItem = $w.tagSelect2.value;

const foundCombination = $w.guige.data.records.find(combination => {
  // 回调函数接收当前数组元素(这里是combination对象)
  // 检查当前元素的 'gglx' 是否等于用户选择的 'selectedType'
  // 并且当前元素的 'ggz' 是否等于用户选择的 'selectedItem'
  return combination.gglx === selectedType && combination.ggz === selectedItem;
});

if (foundCombination) {
  $w.page.dataset.state.orginPrice = foundCombination.yj
  $w.page.dataset.state.currentPrice = foundCombination.xj
  // 可以在这里更新你的界面上显示的原价和现价
} else {
  console.log("未找到匹配的规格组合");
  // 可以显示默认值或错误信息
}

}

配置好了之后,给标签选择设置值改变事件,选择我们的自定义方法
在这里插入图片描述

最终的效果

默认显示的时候是没有原价的
在这里插入图片描述
当选中了一个组合后,就会显示原价和现价
在这里插入图片描述

总结

本节我们介绍了价格动态切换的功能,这种场景在电商小程序里非常常见,核心的思路还是使用常见的数据结构,比如数组和Set,通过自带的API来实现我们需要的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

低代码布道师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值