Ionic3事件(发布)不起作用

时间:2018-06-26 09:32:14

标签: events ionic-framework ionic3

我有一个密码

我正在login.ts中

this._events.publish('user:created', 'val', Date.now());

我正在另一页上做

 this._events.subscribe('user:created', (user,time) => {
  // user and time are the same arguments passed in `events.publish(user, time)`
  console.log('Welcome', user, 'at', time);
});

但是 _events.subscribe 中什么也没有发生。它不起作用,没有console.log。

我在做什么错了。

4 个答案:

答案 0 :(得分:2)

将事件订阅代码放入另一页的构造函数中。

constructor(private events: Events) {
    events.subscribe('user:created', (user,time) => {
      // user and time are the same arguments passed in `events.publish(user, time)`
      console.log('Welcome', user, 'at', time);
    });
}

答案 1 :(得分:0)

听起来像是您试图在2页之间进行交流?以我的经验,除非您有中介,否则在2页之间进行交流并不十分有用。如果一个页面触发了一个事件,则可能不会实例化另一页面来听到该事件。

页面当然可以发布事件。在服务/提供者或app.component.ts中,订阅可能会更成功。然后他们可以响应已发布的事件,并导航到另一个页面或公开由事件操纵的属性,这些页面可以根据需要使用这些属性。

答案 2 :(得分:0)

登录后,您可以调用事件发布方法。

组件中声明变量。

例如:某些:任意

以所需的任何方法发布事件。

this._events.publish('user:created',this.some =“ data”,Date.now());

然后,您可以在另一页的构造函数中订阅事件。

constructor(private events: Events) {
    this._events.subscribe('user:created', (user,time) => {
      console.log('Welcome', user, 'at', time);
    });
}

答案 3 :(得分:0)

其他答案部分正确,但是如果要在构造函数中使用订阅,则必须确保第二个页面已经订阅后发布者才能发布。

它在您有订阅者时有效,您可以使用:

ionViewDidLeave() {
    this.events.publish('queue:name', object);
}