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


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 相关文章推荐
javascript 三种编解码方式
Feb 01 Javascript
formvalidator验证插件中有关ajax验证问题
Jan 04 Javascript
Javascript中string转date示例代码
Nov 01 Javascript
jquery datatable后台封装数据示例代码
Aug 07 Javascript
javascript数据结构与算法之检索算法
Apr 04 Javascript
JQ实现新浪游戏首页幻灯片
Jul 29 Javascript
基于jQuery实现Accordion手风琴自定义插件
Oct 13 Javascript
微信小程序 登陆流程详细介绍
Jan 17 Javascript
node学习记录之搭建web服务器教程
Feb 16 Javascript
利用Vue实现移动端图片轮播组件的方法实例
Aug 23 Javascript
微信小程序wx.previewImage预览图片实例详解
Dec 07 Javascript
Node.js EventEmmitter事件监听器用法实例分析
Jan 07 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 Directory 函数的详解
2013/03/07 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
PHP实现阿里大鱼短信验证的实例代码
2017/07/10 PHP
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2013/10/24 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
利用Angularjs中模块ui-route管理状态的方法
2016/12/27 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
python 数据加密代码
2008/12/24 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
python面向对象法实现图书管理系统
2019/04/19 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
Python求凸包及多边形面积教程
2020/04/12 Python
Python3开发环境搭建详细教程
2020/06/18 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
德国PC硬件网站:CASEKING
2016/10/20 全球购物
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
本科生个人求职自荐信
2013/09/26 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
领导党性分析材料
2014/02/15 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
用JS创建一个录屏功能
2021/11/11 Javascript
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python
Java设计模式之代理模式
2022/04/22 Java/Android
MySQL聚簇索引和非聚簇索引的区别详情
2022/06/14 MySQL