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


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 相关文章推荐
jquery模拟按下回车实现代码
Sep 20 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
Jan 24 Javascript
给事件响应函数传参数的四种方式小结
Dec 05 Javascript
javascript创建createXmlHttpRequest对象示例代码
Feb 10 Javascript
js实现简单的购物车有图有代码
May 26 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
May 13 Javascript
微信小程序 数组中的push与concat的区别
Jan 05 Javascript
JS中定位 position 的使用实例代码
Aug 06 Javascript
Vue中全局变量的定义和使用
Jun 05 Javascript
Vue实现数据请求拦截
Oct 23 Javascript
JS一次前端面试经历记录
Mar 19 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
Nov 12 Javascript
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获取网络上文件
2006/10/09 PHP
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
php制作动态随机验证码
2015/02/12 PHP
php实现微信支付之退款功能
2018/05/30 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
详解JS-- 浮点数运算处理
2016/11/28 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
bootstrap table服务端实现分页效果
2017/08/10 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
python实现石头剪刀布小游戏
2021/01/20 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
pycharm 复制代码出现空格的解决方式
2021/01/15 Python
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
土木工程专业自荐信
2013/10/04 职场文书
处级干部反四风个人对照检查材料思想汇报
2014/09/27 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
python爬虫--selenium模块
2021/03/31 Python