微信小程序从swiper组件跳转到文章详情页面

截至目前,post-detail详情页面就已经完成了全部功能,但是在post文章列表页面还有一点小小的功能需要补充,既然可以点击文章列表的文章跳转到文章详情页面,那么文章列表顶部的swiper组件也应该能够点击跳转。首先对post.wxml页面的swiper组件做一些小小的修改,在每个swiper组件的image元素上设置需要跳转的文章id号。

1

红框里部分代码为新增代码。注意,该id号必须是已存在的文章id号,否则跳转后无法获取文章详细信息。按照一般的思路,跳转到文章详情页面需要在每个swiper-item组件上都注册一个tap事件,从而保证点击每一张图片都可以响应该事件。这样做当然是可以的,但我们设想以下,如果swiper组件下有十几个元素呢?这样一个个地去绑定事件是不是太麻烦了?这里使用之前我们讲到的冒泡事件,不在每个swiper-item的image上注册事件,而只是在swiper上注册一个onSwiperTap事件。无论点击那个swiper-item的image,点击事件都将通过冒泡机制传递到swiper-item的父节点swiper上。所以,我们只需要在swiper组件上捕获这个点击事件,无须在每个子元素上监听点击事件。在post.js中编写事件响应函数onSwiperTap。

2

代码非常简单,思路就是获取文章id号后再通过wx.navigateTo导航跳转到post-detail文章详情页面。需要注意的是,在获取文章id号时,我们并不是使用的event.currentTarget,而使使用的event.target。在冒泡事件中,target指的是事件最开始被触发的元素,而currentTarget指的是捕获事件的元素。放在我们的代码中,target指的是image元素,而currentTarget指的是swiper元素。点击swiper时实际上点击的是image组件,事件由image一级一级地传递到swiper组件中,最后被我们注册在swiper组件上的onSwiperTap捕获。只有在image元素上才设置有postId,从currentTarget(swiper)元素中是无法获取到postId的,所以我们必须使用event.target来获取postId。保存并运行代码,发现点击swiper组件的不同图片可以跳转到对应的文章详情页面。

猜你喜欢

转载自blog.csdn.net/wobaiwodedukuku/article/details/85265531