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

《微信小程序开发从入门到实战》学习二十五

3.3 开发创建投票页面

3.3.13 使用页面路径参数

写了很多重复代码,现在想办法将多选和单选投票页面合二为一。

将单选页面改造作为单选多选共同页面。

修改index.js中的代码,将路径都跳转到第一个单选页面,带上单选或多选的标志,代码如下:

  onTapCreateRadioVote(){

    wx.navigateTo({

      url: '/pages/createVote/createVote?type=radioVote'

    })

  },

  onTapCreateMultiVote(){

    wx.navigateTo({

      url: '/pages/createVote/createVote?type=multiVote',

    })

  }

在页面的跳转路径后面多了些东西,如下所示

?type=multiVote

这个就是路径参数,可以在打开新页面时将一些数据传递给新的页面。以?开始,以=赋值传参,多参的话用&连接。

在/pages/createVote.js文件中的onLoad函数获取页面路径参数,代码如下:

  onLoad(options) {

    console.log(options)

  },

分别从单选和多选投票按钮进入页面,在console面板可以看到option内容:

页面路径参数被转化为Object类型的变量,通过options.type获取参数。页面路径参数永远为string类型,尽量不传递true,false和数字字符串,避免逻辑错误。

接下来修改下代码适配页面路径参数。 

在data加入显示单选还是多选投票类型的标志,在onLoad方法修改单选多选标志和导航栏文字,在表单提交formSubmit也加上单选还是多选的投票标志,代码如下:

data: {

    type:'radioVote',  //用来保存投票类型,默认单选投票,最终需要传递给服务器

...

},

formSubmit(){

    const formData = {

      type:this.data.type,

...

}

...

},

  onLoad(options) {

    console.log(options)

    this.setData({

      type: options.type

    })

    if(options.type === 'radioVote'){

      wx.setNavigationBarTitle({

        title: '创建单选投票',

      })

    }else if(options.type === 'multiVote'){

      wx.setNavigationBarTitle({

        title: '创建多选投票成功好开心',

      })

    }else{

      console.error('wrong page parameter[type]:'+options.type)

    }

    this.formReset()

  }

接下来点击多选投票按钮成功实现。开心。预览效果如下:

3.3 开发创建投票页面结束啦,

接下来开始3.4 开发参与投票页面,敬请期待。 

相关文章:

  • Qt/QML编程学习之心得:一个Qt工程的学习笔记(九)
  • 2023-11-22 LeetCode每日一题(网格中的最小路径代价)
  • C#语言高阶开发
  • 药品一致性评价工作开展流程(常见问题40个)
  • 【自动驾驶】一些业内自动驾驶专业术语释义
  • C++编程——输入
  • JVM 之 class文件详解
  • 2023.11.24 海豚调度,postgres库使用
  • 智慧城市内涝积水监测仪功能,提升城市预防功能
  • 初识Linux(1),看了这篇文章,妈妈再也不用担心我Linux找不到门了。
  • 2个视频怎么做一个二维码?二维码展示多内容的方法
  • 「Verilog学习笔记」不重叠序列检测
  • 【Python 训练营】N_6 求素数
  • 二次开发问题汇总【C#】
  • 【Promise】某个异步方法执行结束后 在执行下面方法
  • 03Go 类型总结
  • 30秒的PHP代码片段(1)数组 - Array
  • Android 架构优化~MVP 架构改造
  • Invalidate和postInvalidate的区别
  • JavaScript创建对象的四种方式
  • LeetCode算法系列_0891_子序列宽度之和
  • Linux Process Manage
  • markdown编辑器简评
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • PV统计优化设计
  • Swoft 源码剖析 - 代码自动更新机制
  • 阿里云应用高可用服务公测发布
  • 从0实现一个tiny react(三)生命周期
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 在Docker Swarm上部署Apache Storm:第1部分
  • No resource identifier found for attribute,RxJava之zip操作符
  • 仓管云——企业云erp功能有哪些?
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​渐进式Web应用PWA的未来
  • !!java web学习笔记(一到五)
  • #Z2294. 打印树的直径
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $(selector).each()和$.each()的区别
  • (152)时序收敛--->(02)时序收敛二
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2.2w字)前端单元测试之Jest详解篇
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (纯JS)图片裁剪
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (一)Docker基本介绍
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .NET Core 中的路径问题