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


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 浮动广告实现代码
Dec 25 Javascript
jQuery数据缓存功能的实现思路及简单模拟
May 27 Javascript
jQuery中:disabled选择器用法实例
Jan 04 Javascript
关于JavaScript 原型链的一点个人理解
Jul 31 Javascript
JS如何设置元素样式的方法示例
Aug 28 Javascript
jQuery简单判断值是否存在于数组中的方法示例
Apr 17 jQuery
微信小程序制作表格的方法
Feb 14 Javascript
Vue关于组件化开发知识点详解
May 13 Javascript
基于原生js实现九宫格算法代码实例
Jul 03 Javascript
原生js生成图片验证码
Oct 11 Javascript
解决vue init webpack 下载依赖卡住不动的问题
Nov 09 Javascript
vue 实现click同时传入事件对象和自定义参数
Jan 29 Vue.js
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学习笔记之 函数声明
2011/06/09 PHP
php pki加密技术(openssl)详解
2013/07/01 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
PHP学习笔记(二):变量详解
2015/04/17 PHP
PHP Mysqli 常用代码集合
2016/11/12 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
Javascript操纵Cookie实现购物车程序
2007/02/15 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
vue-cli如何添加less 以及sass
2017/07/06 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
使用python加密自己的密码
2015/08/04 Python
python使用matplotlib绘制柱状图教程
2017/02/08 Python
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
Vans澳大利亚官网:购买鞋子、服装及配件
2019/09/05 全球购物
机械工程师的岗位职责
2013/11/17 职场文书
2014年残联工作总结
2014/11/21 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
小学班主任心得体会
2016/01/07 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
 Python 中 logging 模块使用详情
2022/03/03 Python
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript