wx小程序学习Day6 商品详情页-获取数据、渲染轮播图、放大预览图片、点击加入购物车

今天是学习小程序的第6



1. 商品详情-获取数据

现在来实现点击商品跳转商品详情页:
在我们的商品navigator标签上加上url属性,同时还要传递参数
在这里插入图片描述
pages/goods_detail/index.jsonLoad()函数中,可以获取到这个传递过来的参数
在这里插入图片描述
接下来要发送请求,获取商品详情数据
这两种方法都能用
在这里插入图片描述
onLoad()中调用getGoodsDetail()并把商品id传过去
在这里插入图片描述
成功获取到数据
在这里插入图片描述


2. 商品详情-轮播图渲染

分析一下获得的商品数据,找到关于轮播图的数据是哪部分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


3. 商品详情-价格、名称、图文详情

商品价格、名称这部分很简单,就设置一下样式就好
在这里插入图片描述
图文详情里的图片不是我们自己通过标签写的,获取的商品数据里面就有对应的标签内容
在这里插入图片描述
这时候就要用<rich-text>标签,可以将字符串解析为对应html内容
在这里插入图片描述
在这里插入图片描述


4. 商品详情-优化动态渲染

我们获取到的商品数据保存在了goodsObj中,但是实际上用到的并没有那么多,这样会影响小程序的性能
在这里插入图片描述


5. 商品详情-放大预览图片

要实现的功能是点击轮播图,可以预览大图
预览功能主要是调用了小程序的一个api: previewImage()
https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.previewImage.html
在这里插入图片描述
先给swiper-item绑定一下点击事件handlePreview
urls属性是要预览的图片的url数组,就在我们前面获取的商品数据里
current是当前显示的图片的url

这里current先放第一张图试试
在这里插入图片描述
现在已经可以正常预览,也可以往后翻
但是如果我们点击了轮播图的第一张图之后的图,一开始先显示的也是第一张
在这里插入图片描述
所以点击轮播图的时候,我们要传参,从而得知点击了哪一张图,就让预览的时候先显示哪一张图
在这里插入图片描述
在这里插入图片描述


6. 商品详情-底部工具栏

样式不放了,慢慢调哈
在这里插入图片描述
这里注意底部栏定位在最下方之后会挡住一部分页面
在这里插入图片描述
page设置一个padding-bottom为底部栏的高度即可
在这里插入图片描述
之后实现一些点击底部栏的功能:
点击客服,要打开客服对话,这个可以通过设置<button>open-typecontact 实现
可以把我们的view标签改成button标签,但是button应该有一些默认样式,我们也可以直接加一个button标签,在样式部分设置button标签绝对定位,高度宽度100%,透明度为0
在这里插入图片描述
点击分享,可以转发当前小程序给微信朋友,通过设置<button>open-typeshare 实现。这里和客服的实现基本相同就不放图了

点击购物车,可以跳转到购物车页面
这里的实现不能用<navigator>标签的url属性,也不能调用wx.navigateTo()
这两种方法都不支持跳到tabbar页面,而我们的购物车就属于tabbar页面
我们应该要用wx.switchTab()方法(或者设置<navigator>标签的open-typeswitchTab也可以)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


7. 商品详情-点击加入购物车

我们使用本地存储技术来缓存购物车数据

新增了一个全局对象goodsInfo,在获取商品数据的时候赋值:
注意这里要赋值为res.data.message
在这里插入图片描述

加入购物车按钮绑定addToCart()事件
圈起来的这一步一定不能漏掉|| [],因为第一次的时候本地存储中的购物车数据是空的,不是数组就调用不了findIndex()方法
这里的判断用find()也可以,但是因为后面再次添加商品的时候,需要找到商品在本地存储数组中的索引,所以用findIndex()
num属性记录商品被添加进购物车的次数
在这里插入图片描述
在这里插入图片描述


商品详情页-完
  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现微信小程序轮播图跳转到详情页的功能通常需要以下步骤: 1. 在轮播图组件中添 `bindtap` 事件,用于监听用户点击事件; 2. 在事件处理函数中,获取当前轮播图的数据(如 ID、标题、图片等),并将其传递到详情页的页面参数中; 3. 跳转到详情页,并将页面参数传递给详情页。 下面是一个简单的示例代码: ```html <!-- 在 wxml 中定义轮播图组件 --> <swiper class="swiper" indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" bindtap="onSwiperTap"> <swiper-item wx:for="{{swiperList}}" wx:key="swiper-item-{{item.id}}"> <image src="{{item.imgUrl}}" mode="aspectFill"></image> </swiper-item> </swiper> ``` ```javascript // 在 js 文件中定义轮播图数据和事件处理函数 Page({ data: { swiperList: [ { id: 1, title: '轮播图 1', imgUrl: 'https://example.com/img1.jpg' }, { id: 2, title: '轮播图 2', imgUrl: 'https://example.com/img2.jpg' }, { id: 3, title: '轮播图 3', imgUrl: 'https://example.com/img3.jpg' } ] }, // 处理轮播图点击事件 onSwiperTap: function(e) { const itemIndex = e.target.dataset.swiperItemIndex; const item = this.data.swiperList[itemIndex]; wx.navigateTo({ url: `/pages/detail/detail?id=${item.id}&title=${item.title}&imgUrl=${item.imgUrl}` }); } }); ``` 在上面的示例代码中,我们在 `swiper` 组件中添了 `bindtap` 事件,用于监听用户点击事件。在事件处理函数 `onSwiperTap` 中,我们获取了当前轮播图的数据(即 `this.data.swiperList[itemIndex]`),并将其传递到详情页的页面参数中。最后,我们调用 `wx.navigateTo` 方法跳转到详情页,并将页面参数传递给详情页

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值