在不同页面中多次订阅离子单个事件

时间:2018-10-19 12:56:24

标签: angular events ionic-framework ionic3

是否可以在一个页面中发布一个事件,并在不同页面上多次订阅。像这样。

handleClick(){
  this.events1.publish('my-message', ' Hello from page1!');
}


export class Page1Page {
  constructor(public events1: Events) {
     events1.subscribe('my-message', (data) =>{
       console.log(data); //  Hello from page1!
     });
  }
}


export class Page2Page {
  constructor(public events1: Events) {
     events1.subscribe('my-message', (data) =>{
       console.log(data); //  Hello from page2!
     });
  }
}

这是一个好习惯吗?还是这段代码给出错误?

1 个答案:

答案 0 :(得分:1)

好。这是我的看法。我看到了3个难题:

1)您需要一些有关网络连接的信息。我将从Ionic Native包装的网络cordova-plugin-network-information插件开始。

2)您应该创建与此网络插件一起使用的Angular服务/提供者,以了解网络的变化。然后,它可以公开此数据供页面使用(并根据需要触发事件)。另请注意,应用程序启动时,该应用程序可能仅在此处进行更新,因此您可能希望获取ready(启动)和resume(从后台打开)的当前状态。有关这些挂钩,请参见Ionic Platform

3)然后,您的页面可以利用#2中的服务/提供程序来显示当前的在线状态(如果您的UI需要提醒更改而不是仅显示当前状态,则可以监视更改)。