当前位置: 首页 > news >正文

微信小程序一对多个页面间传递数据进行通信,事件触发的实现方法

在有些场景下,使用组件间通信或者组件和页面间通信并不可行。比如我需要只有一个websocket实例,并且需要向多个页面传递我接收到的消息。

下面的方法是一个页面向其它页面(触发事件)传递数据,其它页面也可以向这个页面传递数据。也就是可以互相传递。缺点是,这个页面必须曾经打开过。

首先,在app.js中的onLaunch里这样定义:

this.pages = {};

假设有2个页面:

a.js

b.js

分别在这2个js文件中,onLoad事件中,写如下代码:

app.pages[this.__route__] = this;

分别在这2个js文件中,定义一个方法,用于接收收到的消息。比如我们可以这样写(communication 随便命名即可):

communication(res){console.log(res)
}

如果你想从a.js里往b.js发数据(触发事件communication),那么在a.js里这样写:

try{app.pages['pages/b/b'].communication("I am from a.js");
}catch{console.log('b页面未打开过')
}

前面说过了,分别写接收消息的方法communication,那么

在b.js里需要这样写:

//在b.js里接收消息
communication(content){console.log('in b.js,' + content)
//再给a.js发一条消息try{app.pages['pages/a/a'].communication("I am from b.js");}catch(e){console.error("error in b.js " + e.message)}}

上面的代码,因为在b.js里又给a.js发了一个消息,那么你要在a.js里也写一个communication方法(前面已经说过要在需要接收消息的js中分别写communication):

在a.js里加几行代码,用于接收b.js发来的消息:

communication(content){console.log('in a.js, ' + content)
},

多个页面同理。

http://www.lryc.cn/news/180561.html

相关文章:

  • 软件测试之Python基础学习
  • 模块化编程+LCD1602调试工具——“51单片机”
  • 【Linux】UDP的服务端 + 客户端
  • 德国自动驾驶卡车公司【Fernride】完成1900万美元A轮融资
  • 实现水平垂直居中的十种方式
  • 头条号热点采集工具-头条号热文采集软件
  • 了解”变分下界“
  • Andriod 简单控件
  • Substructure‑aware subgraph reasoning for inductive relation prediction
  • 古诗词学习鉴赏APP设计与实现(源码+lw+部署文档+讲解等)
  • 深度学习与python theano
  • 【算法优选】双指针专题——贰
  • AI智能电话机器人实用吗
  • 网络爬虫--伪装浏览器
  • C/C++程序的内存开辟
  • 【Java 进阶篇】JDBC DriverManager 详解
  • 2023年Linux总结常用命令
  • Mybatis3详解 之 全局配置文件详解
  • 力扣-345.反转字符串中的元音字母
  • 643. 子数组最大平均数I(滑动窗口)
  • Java 21 新特性:虚拟线程(Virtual Threads)
  • 18scala笔记
  • 【LeetCode周赛】LeetCode第365场周赛
  • 响应式设计的实现方式
  • PHP 反序列化漏洞:__PHP_Incomplete_Class 与 serialize(unserialize($x)) !== $x;
  • TempleteMethod
  • 1558. 得到目标数组的最少函数调用次数
  • 子域名扫描, 后台扫描
  • 毛玻璃带有光影效果的卡片
  • 【Java】面向过程和面向对象思想||对象和类