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


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 相关文章推荐
一直复略了的一个问题,关于表单重复提交
Feb 15 Javascript
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
May 14 Javascript
使用Math.floor与Math.random取随机整数的方法详解
May 07 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
Nov 20 Javascript
js实现图片旋转的三种方法
Apr 10 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
Feb 25 Javascript
JavaScript实现把数字转换成中文
Jun 29 Javascript
Bootstrap每天必学之进度条
Nov 30 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
Apr 21 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
Oct 20 Javascript
JavaScript实现一个简易的计算器实例代码
May 10 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
Oct 31 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实现对站点内容外部链接的过滤方法
2014/09/10 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
php实现简单爬虫的开发
2016/03/28 PHP
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
[26:24]完美副总裁、DOTA2负责人蔡玮专访:电竞如人生
2014/09/11 DOTA
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
使用python求解二次规划的问题
2020/02/29 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
python的dict判断key是否存在的方法
2020/12/09 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
J2EE相关知识面试题
2013/08/26 面试题
医科大学生毕业的自我评价分享
2013/11/12 职场文书
小学生打架检讨书
2014/01/26 职场文书
班班通项目实施方案
2014/02/25 职场文书
给老师的一封建议书
2014/03/13 职场文书
个人委托书格式
2014/04/04 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
2014年第四季度入党积极分子思想汇报(十八届四中全会)
2014/11/03 职场文书
2014年德育工作总结
2014/11/20 职场文书
介绍信样本
2015/01/31 职场文书
学校体育节班级口号
2015/12/25 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
四十九个javascript小知识实用技巧
2021/11/20 Javascript