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


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 相关文章推荐
?牟┛途W扣了一??效果出?? target=
May 27 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
Aug 23 Javascript
代码触发js事件(click、change)示例应用
Dec 13 Javascript
jQuery异步获取json数据方法汇总
Dec 22 Javascript
jQuery中[attribute]选择器用法实例
Dec 31 Javascript
Javascript 计算字符串在localStorage中所占字节数
Oct 21 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
Jan 22 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
Feb 03 Javascript
JQuery动态添加Select的Option元素实现方法
Aug 29 Javascript
AngularJS路由切换实现方法分析
Mar 17 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
Oct 19 Javascript
利用jquery和BootStrap实现动态滚动条效果
Dec 03 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实现编辑和保存文件的方法
2015/07/20 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
理解 JavaScript 预解析
2009/10/25 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
常用的JavaScript WEB操作方法分享
2015/02/28 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
微信小程序实现电子签名功能
2020/07/29 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
python中迭代器(iterator)用法实例分析
2015/04/29 Python
Python通过poll实现异步IO的方法
2015/06/04 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
python感知机实现代码
2019/01/18 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
python实现PID算法及测试的例子
2019/08/08 Python
python处理document文档保留原样式
2019/09/23 Python
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
JSF界面控制层技术
2013/06/17 面试题
Servlet如何得到客户端机器的信息
2014/10/17 面试题
小学生我的梦想演讲稿
2014/08/21 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
个人专业技术总结
2015/03/05 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
初中班级口号霸气押韵
2015/12/24 职场文书
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android