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


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函数的重载
Sep 22 Javascript
javascript模仿msgbox提示效果代码
Jun 10 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
Sep 04 Javascript
Javascript页面添加到收藏夹的简单方法
Aug 07 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
Dec 15 Javascript
jquery+easeing实现仿flash的载入动画
Mar 10 Javascript
js检测判断日期大于多少天的方法
May 04 Javascript
深入理解Angularjs中的$resource服务
Dec 31 Javascript
微信小程序实现展示评分结果功能
Feb 15 Javascript
Vue源码学习之关于对Array的数据侦听实现
Apr 23 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
Dec 25 Javascript
小程序自定义弹框效果
Nov 16 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 mssql 数据库分页SQL语句
2008/12/16 PHP
PHP安全性漫谈
2012/06/28 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
为jQuery增加join方法的实现代码
2010/11/28 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
2011/11/14 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
微信小程序如何实现radio单选框单击打勾和取消
2020/01/21 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
最基础的Python的socket编程入门教程
2015/04/23 Python
python如何压缩新文件到已有ZIP文件
2018/03/14 Python
python使用turtle库绘制时钟
2020/03/25 Python
Python实现简单石头剪刀布游戏
2021/01/20 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
python logging设置level失败的解决方法
2020/02/19 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
《雨点》教学反思
2014/02/12 职场文书
技能竞赛活动方案
2014/02/21 职场文书
户外活动总结范文
2014/04/30 职场文书
政府信息公开实施方案
2014/05/09 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
Python os和os.path模块详情
2022/04/02 Python