开发微信小程序时,页面间数据传送多采用URL方式传参、添加全局变量,对于在本地缓存不大实用(感觉操作缓存,应该性能会有一定的损耗吧)。而从新打开的页面回到之前的界面,貌似只有放在本地缓存、添加全局变量两种方式。后来渐渐地又发现了可以使用页面栈进行传参,但这种方式有个弊端就是多页面访问同一页面时,可能出现一些问题。最近发现了一种简便方法,既可以传参,也能用于作页面回调函数。
有一个开源的事件分发插件onfire.js,Github开源地址,这个地址下并不能找到onfire.js文件,好像是需要怎么生成的吧,没玩过。后来在BootCDN找到了一个1.0.6版本的,是在线的js源代码,直接Ctr+C之后新建一个文本放进去,将文件名字改成js文件就能使用了,如果懒得干也可以使用我上传的onfire.js。这个插件貌似能做这些事儿:
(1)简单的事件分发
(2)在 React、Vue.js、Angular 中用于跨组件的轻量级实现
(3)事件订阅和发布
API方法:
1、绑定(订阅)事件
1.1、on(event_name, callback)订阅事件,可触发多次。当有名字为event_name的事件发生时,执行callback回调函数(可以传参)。返回值为事件对象eventObj,可以用于取消事件绑定。
1.2、one(event_name, callback)绑定(订阅)事件,只能触发一次,触发之后失效。当有名字为event_name的事件发生时,执行callback回调函数(可以传参)。返回值为事件对象eventObj。
2、发布消息
2.1、fire(event_name, data)
触发事件。事件名为event_name,参数为data(可多个参数,用逗号隔开)的事件
2.2、fireSync(event_name, data)触发同步。事件名为event_name,
参数为data(可多个参数,用逗号隔开)的事件
3、取消订阅
un(event_name/eventObj
)取消事件绑定,可以取消一个绑定事件,也可取消全部。
clear()清空所有事件
开始撸代码测试一波:
首先在pages/display/index页面注册事件,需要先导入onfire.js插件(用的1.0.6版本),这东西我放在utils下面了,在顶部导入吧: