【问题标题】:Subscribe ionic single event in different pages for multiple times多次订阅不同页面的ionic单事件
【发布时间】:2018-10-19 23:14:49
【问题描述】:

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

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!
     });
  }
}

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

【问题讨论】:

  • 你到底想用这个事件触发什么?根据我的经验,这些事件的订阅将发生在页面之外(例如在服务中)。然后该服务可以导航到页面(或执行您需要的任何操作)。
  • @BRass 我想从服务发布事件(此事件将在网络更改上发布,如“离线”和“在线”)...所以我想在当前活动页面上收听此事件...

标签: angular events ionic-framework ionic3


【解决方案1】:

好的。这是我对此的看法。我看到了 3 块拼图:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多