微信小程序实现传递多个参数与事件处理


Posted in Javascript onAugust 12, 2019

前言

开发过程中经常会遇到从一个页面携带数据到另一个页面的情况,所以需要知道以下信息,什么是事件?有哪些传递方式?如果传递数组呢?如果传递对象呢?

一、事件

什么是事件

  • 事件是视图层到逻辑层的通讯方式
  • 事件可以将用户的行为反馈到逻辑层进行处理
  • 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层对应的事件处理函数
  • 事件对象可以携带额外信息,如id, dataset, touches

事件处理的使用

通过在wxml中设置bindtap、catchtap等,在js中写对应的实现方法(不过这种方式目前有个缺点,点击的时候没有点击效果),使用方法如下

以下摘自微信小程序官方教程,在wxml中绑定一个事件

<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>

然后在对应的js中写出事件的具体实现

Page({
 tapName: function(event) {
  console.log(event)
 }
})

事件分类

事件分为冒泡事件和非冒泡事件

  1. 冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递
  2. 非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递

一般使用场景中,例如一个列表的item中有多个点击事件需要处理,就可以使用catchtap阻止向上冒泡

二、参数传递

参数传递有两种方式

  1. 在wxml中使用navigator跳转url传递参数
  2. 在wxml中绑定事件后,通过data-hi="参数"的方式传递

(1)navigator跳转url传递字符串参数

代码如下,将要传递到另一个页面的字符串testId的值赋值到url中

<navigator class="test-item" url="../../pages/test/test?testId={{testData.testId}}">
  ...
</navigator>

在js页面中onLoad方法中接收

Page({
  onLoad: function(options) {
    var testId = options.testId
    console.log(testId)
  }
})

(2)navigator跳转url传递数组

如果一个页面要将一个数组,如相册列表传递到另一个页面

<navigator class="test-item" url="../../pages/test/test?albumList={{testData.albumList}}">
  ...
</navigator>

传递到js后从options中得到的是个字符串,每个图片的url通过','分隔,所以此时还需要对其进行处理,重新组装为数组

Page({
  data: {
     // 相册列表数据
    albumList: [],
  },  
  onLoad: function (options) {
    var that = this;
 
    that.setData({
      albumList: options.albumList.split(",")
    });
  }
})

(3)wxml中配置data-testid传递字符串

这种方式一般是在wxml中绑定事件,同时设置需要传递的数据,如果需要传递多个,可以写多个data-[参数]的方式进行传递

<view bindtap="clickMe" data-testId={{testId}}">
  ...
</view>

在js页面中自定义方法clickMe中接收

Page({
  clickMe: function(event) {
    var testId = event.currentTarget.dataset.testid;
    wx.navigateTo({
      url: '../../pages/test/test'
    })
  }
})

注意:通过wxml设置data-[参数名]传递参数,[参数名]只能是小写,不能有大写

(4)wxml中配置data-albumlist传递数组

其实原理同上,上代码

<view bindtap="clickMe" data-albumlist={{testData.albumList}}">
  ...
</view>

在js页面中自定义方法clickMe中接收

Page({
  clickMe: function(event) {
    var albumList = event.currentTarget.dataset.albumlist.split(",");
    wx.navigateTo({
      url: '../../pages/test/test'
    })
  }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js选项卡的实现方法
Feb 09 Javascript
jquery使用remove()方法删除指定class子元素
Mar 26 Javascript
理解javascript定时器中的单线程
Feb 23 Javascript
微信开发 使用picker封装省市区三级联动模板
Oct 28 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
Mar 07 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
May 16 Javascript
vue-router中的hash和history两种模式的区别
Jul 17 Javascript
微信小程序实现渐入渐出动画效果
Jun 13 Javascript
通过扫小程序码实现网站登陆功能
Aug 22 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
Apr 07 Javascript
jQuery使用jsonp实现百度搜索的示例代码
Jul 08 jQuery
jquery实现抽奖功能
Oct 22 jQuery
node命令行工具之实现项目工程自动初始化的标准流程
Aug 12 #Javascript
五分钟搞懂Vuex实用知识(小结)
Aug 12 #Javascript
no-vnc和node.js实现web远程桌面的完整步骤
Aug 11 #Javascript
Angular8基础应用之表单及其验证
Aug 11 #Javascript
浅谈javascript错误处理
Aug 11 #Javascript
axios异步提交表单数据的几种方法
Aug 11 #Javascript
node.js实现带进度条的多文件上传
Mar 27 #Javascript
You might like
php Ajax乱码
2008/04/09 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
javascript网页关键字高亮代码
2008/07/30 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
python 通过logging写入日志到文件和控制台的实例
2018/04/28 Python
Python程序暂停的正常处理方法
2019/11/07 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
网络技术支持面试题
2013/04/22 面试题
管理学专业个人求职信范文
2013/12/13 职场文书
一年级数学教学反思
2014/02/01 职场文书
求职自荐信怎么写
2014/03/06 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
会议邀请函
2015/01/30 职场文书
大学生自荐书范文
2015/03/05 职场文书
教师外出学习心得体会
2016/01/18 职场文书
高二数学教学反思
2016/02/18 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
用Python将库打包发布到pypi
2021/04/13 Python