1. 简单传参

wx.navigateTo({
url: '/pages/demo/index/index?id=1'
})
/pages/demo/index/index.js 中
onLoad(options){
var id = options.id; //获取通过url参数传递来的参数
}
 
2. 复杂传参
var json = JSON.stringify({a:1});
wx.navigateTo({
url: '/pages/demo/index/index?json='+ json
})
/pages/demo/index/index.js 中
onLoad(options){
var json = JSON.parse(options.json); //获取通过url参数传递来的参数 , 反解为json对象

}

 
3.
  1 写入storage

  2 写入app.globalData
  3 写入 其他自定义的全局容器内
以上123点都可以实现数据的传输.都是方式之一
 
4. 通知系统进行 数据传输
  对于大数据量的传输.这个过程可能会涉及到数据量,解析反解性能,或特殊字符等因素的干扰.
  以上1,2,3介绍的传输方式,只针对页面跳转前进有效,对于页面后退 如: 选择城市,选择日期等控件型页面,处理则要麻烦一些. 引入通知系统,则要方便许多
 
Notification 通知系统, 代码来自github做了一些扩展. 所谓的通知,也可叫 订阅-发布模式, 观察者模式 ....
即 有一个全局的通知模块,接收 订阅消息者,接收定向发布消息者.消息发送过来,会检查有没有订阅这个消息的人,有则主动推送消息给对方(具体为某个页面)
 
原始代码见:

github地址: https://github.com/icindy/WxNotificationCenter
 
我们封装并扩展了这个逻辑 , 编码
使用 self.addNotifyListener("订阅名称");       注册订阅者 -- 订阅页面调用
使用 self.onNotify(data消息传输的数据,"订阅名称")   处理消息   -- 订阅页面处理
使用  self.removeNotifyListener("订阅名称")      移除消息订阅 -- 订阅页面处理, 一般 不需要手工调用, 在 扩展Page参数一章中的处理,已经封装了消息的销毁逻辑
 
使用 self.postNotify("订阅名称",data消息传输的数据)  发布消息 -- 发布页面调用 (和订阅页面可以是同一个,一般都是最后打开的控件页面,比如 城市选择控件)
 
 
控件使用通知传递消息,可以见 pages/selectCity/index.js pages/datepicker/datepicker/index.js 引用页面, 主页->立即定制
 
 
封装后:
每个Page打开,都会注册一个 当前route.url 为名称的监听
Page Onload时,会首先判断有没有给自己的 消息,有则直接处理
Page OnUnload时,会销毁所有本页面的监听

微信小程序6 - 页面之间传参及通知系统封装的更多相关文章

  1. 微信小程序之跨界面传参

    微信小程序在两个之间传参类似js传递url拼接参数,举个例子来说吧 input自己设置参数 //index.wxml <form bindsubmit="formSubmit" ...

  2. 微信小程序开发--页面之间的跳转

    一.navigator--完成页面之间的跳转 1.新建一个页面文件夹 2.在app.json文件中引入页面 "pages": [ "pages/index/index&q ...

  3. 微信小程序 - bindtap等事件传参

    什么是事件事件是视图层到逻辑层的通讯方式. 事件可以将用户的行为反馈到逻辑层进行处理. 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数. 事件对象可以携带额外信息,如 id, ...

  4. 微信小程序之页面之间传递值

    页面之间传值有三种方式 1.url传值 2.本地存储传值 3.全局变量传值 1.url传值: 通过url传值的需要通过option来获取参数值. 更多详情可以访问小程序-navigateTo章节. A ...

  5. 微信小程序:bindtap方法传参

    1.wxml <view bindtap="pay_again" data-name="{{orderList.jid}}" data-fee=" ...

  6. 图解微信小程序---实现页面的跳转与返回操作

    图解微信小程序---实现页面的跳转与返回操作 代码笔记 操作步骤 第一步:在app.json配置文件中,创建跳转页面 第二步:编写首页跳转(注意跳转方式,和设置点击样式类名) 第三步:编写首页样式 第 ...

  7. jsp页面之间传参用el表达式获取

    jsp页面之间传参用el表达式获取 参数方法:${param.参数名} session方法:${session.变量名}

  8. 微信小程序:页面配置 page.json

    微信小程序:页面配置 page.json 一.页面配置 page.json 如果整个小程序的风格是蓝色调,那么可以在 app.json 里边声明顶部颜色是蓝色即可. 实际情况可能不是这样,可能你小程序 ...

  9. 微信小程序开发--页面结构

    一.微信小程序开发--页面文件组成 [page.name].js 页面逻辑文件,用于创建页面对象,以及处理页面生命周期控制和数据处理 [page.name].wxml wxml指的是Wei Xin M ...

随机推荐

  1. T-SQL 之 表变量和临时表

    一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约 ...

  2. 简单测试Demo:如何用Java压缩文件夹和文件

    一.直接贴出测试代码 package com.jason.zip; import java.io.File; import java.io.FileInputStream; import java.i ...

  3. ssh 安装笔记

    debian 6.0 的一台32位机器,aptitude search openssh-server-x509 没结果(其他机同样源配置是有结果的),于是上内部源下载openssh-server-x5 ...

  4. MySQL主从架构之Master-Slave-Slave级联

    Master-Slave-Slave级联 配置结果同上一小节是一样的 注意:默认情况下,从库执行relay-log中的SQL语句不会记录到BINLOG. 所以,处于中间层的MySQL配置项需要额外开启 ...

  5. SQLSERVER中的 CEILING函数和 FLOOR函数

    SQLSERVER中的 CEILING函数和 FLOOR函数 --SQLSERVER中的 CEILING函数和 FLOOR函数 --ceiling函数返回大于或等于所给数字表达式的最小整数. --fl ...

  6. phpredis中文手册——《redis中文手册》 php版(转)

    redis中文手册:http://readthedocs.org/docs/redis/en/latest/ 本文是参考<redis中文手册>,将示例代码用php来实现,注意php-red ...

  7. 使用RMAN方式清除

    使用RMAN方式清除 RMAN清除方式会自动清除磁盘上的归档日志文件,同时会释放控制文件中对应的归档日志的归档信息. 可以基于不同的条件来清除归档日志,如基于SCN,基于SEQUENCE,基于TIME ...

  8. 最全的iOS物理引擎demo

    概述 最全的iOS物理引擎demo,实现重力.碰撞.推力.摆动.碰撞+重力.重力弹跳.仿摩拜单车贴纸效果.防iMessage滚动效果.防百度外卖首页重力感应等效果! 详细 代码下载:http://ww ...

  9. Zmodem transfer canceled by remote side问题的解决办法!

    在使用跳转机跳转到另外一台机器的时候,上传一个安装包,此时使用rz命令上传文件,例如:resin-pro-4.0.44.tar.gz,结果出现如下错误提示: 点击确定之后,界面出现乱码,并退回到了跳转 ...

  10. 如何用原生js或jquery设置select的值

    1.原生js设置select值的方法 (1)有时可能需要隐藏select,但是还得需要更改select所传递的值.(select的默认选中之为第一个,即下标为0的选项值) var gd2=docume ...