当前位置: 首页 > news >正文

【微信小程序-原生开发】实用教程16 - 查看详情(含页面跳转的传参方法--简单传参 vs 复杂传参)

需在实现列表的基础上开发

【微信小程序-原生开发】实用教程15 - 列表的排序、搜索(含云数据库常用查询条件的使用方法,t-search 组件的使用)_朝阳39的博客-CSDN博客
https://sunshinehu.blog.csdn.net/article/details/129356909

效果预览

在这里插入图片描述

技术要点

详情的获取有两种方式:

方式一:通过 id 获取详情

优点:可以确保每次打开详情都是最新的内容
缺点:需要访问详情接口,会消耗调用次数和客户流量

以查看成员详情为例

在这里插入图片描述

    <t-cell url="{{'/pages/components/friend/detail/index?id='+item.memberID}}" align='top' leftIcon="user-add" wx:if="{{item.type === 3}}" title="{{'热烈欢迎 '+item.publisher+' 加入DOS圆梦大家庭!'}}" />
  • t-cell 组件的 url 属性可以直接实现页面跳转,效果同 wx.navigateTo

当然,也可以绑定点击事件,触发页面跳转

bindtap="gotoDetail" data-detail="{{item}}"
    gotoDetail(e) {let memberID = e.currentTarget.dataset.detail._idwx.navigateTo({url: '/pages/components/friend/detail/index?id='+ memberID})}

以上为在目标页面路径后添加参数的方式,实现页面传参,仅适用于参数内容少,且为字符串等基础数据类型的参数。(若是对象等复杂类型则不适合此种方式的页面传参)

详情页接收参数并查询详情

在页面生命周期 onLoad 方法中,接收来自上个页面通过页面路径传来的参数

onLoad(options) {// 通过id获取详情let id = options.idif (id) {this.setData({id: id})this.getDetail()return}
}
  getDetail() {let that = thisthat.setData({show: false})wx.showLoading({title: '加载中',})db.doc(this.data.id).get().then(res => {that.setData({detail: res.data,show: true})wx.hideLoading()}).catch(() => {that.setData({show: true})wx.hideLoading()})},

方式二:直接从列表传递详情

优点:无需访问接口,可节省调用次数和客户流量
缺点:查看的内容为获取当前列表时得到的详情内容,可能已不是最新的数据内容。

当页面跳转需传递复杂参数(如对象)时,则需采用以下方式

    gotoDetail(e) {let detail = e.currentTarget.dataset.detailwx.navigateTo({url: '/pages/components/friend/detail/index',success: function (res) {res.eventChannel.emit('sendData', {data: detail})}})}

详情页接收此种参数的方法如下:

  onLoad() {let that = this// 接收列表页传入的复杂数据--对象(详情)const eventChannel = this.getOpenerEventChannel()eventChannel.on('sendData', function (res) {that.setData({id: res.data._id,detail: res.data,show: true})})},
http://www.lryc.cn/news/32298.html

相关文章:

  • 论文精读:Ansor: Generating High-Performance Tensor Programs for Deep Learning
  • SpringBoot With IoC,DI, AOP,自动配置
  • ggplot2的组图拓展包(1):patchwork(上篇)
  • Python 异步: 异步迭代器(15)
  • HD-G2L-IOT V2.0核心板MPU压力测试
  • scikit-image:遥感图像geotiff格式转mat格式
  • 吉利银河L7、长城哈弗B07、比亚迪宋Plus DM-i,自主品牌决战混动
  • 附录3:说一说 Ambari 视图编译相关
  • Arduino双色LED实验记录
  • flex布局
  • 【操作系统原理实验】命令解释器模拟实现
  • 使用nvm管理node版本
  • jQuery BootStrap
  • Vue2.0开发之——购物车案例-Footer组件封装(50)
  • HTML基本概述
  • Vue 3.0 响应式 计算和侦听 【Vue3 从零开始】
  • 1.mbedtls移植到STM32
  • 模块、包和异常
  • RocketMQ控制台的安装与启动
  • pytorch安装的超级详细教程(没有之一)
  • leetcode两数之和
  • 断点调试(debug)
  • Vuex 状态管理
  • 射频功率放大器在辉光放电特征及风速测量原理中的应用
  • keepalived+nginx 双机热备搭建
  • 零基础如何入门学习Python?
  • 认识CSS之基础选择器
  • JavaScript面试题整理汇总
  • 科普| 什么是云原生?
  • Spring Boot 3.0系列【9】核心特性篇之依赖管理