Events:事件注册  在任意一界面注册事件之后可在任意界面根据事件名称进行调用。

 

首先看一下官方文档的调用方式

import { Events } from 'ionic-angular';

constructor(public events: Events) {}

// first page (publish an event when a user is created)
function createUser(user) {
  console.log('User created!')
  events.publish('user:created', user, Date.now());
}

// second page (listen for the user created event)
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 有三个方法 分别是:

this.events.publish ()        //注册Events事件
this.events.subscribe()        //调用Eevents事件
this.events.unsubscribe()        //注销Events事件

使用实例:

Ionic2 升级Rc版之后,在Tabs的Menu页调用Push事件跳转到首页的时候下面的菜单还是存在的,这样明显是不正常的。

解决办法1:登录页自动隐藏Tabs菜单。

解决办法2:在Tabs中注册一个返回登录页得Events事件,通过Events返回首页。

登录页的自动隐藏下次在记录。我们现在采用最简单的方式 第二个办法。

Tabs界面代码:


constructor(private nav: NavController, private events: Events) {
// this tells the tabs component which Pages
// should be each tab's root Page

}

 
ionViewDidLoad() {
this.listenEvents(); //console.log('界面创建'); } ionViewWillUnload() { //console.log('界面销毁');this.events.unsubscribe('toLogin'); } listenEvents() {this.events.subscribe('toLogin', () => { this.nav.pop(); console.log('返回登录'); }); }
退出界面调用调用代码
  logOut() {
    this.event.publish('toLogin');
  }

 

注:界面每次调用Push是会就是触发ionViewDidLoad事件,调用Pop的时候则会销毁界面,调用ionViewWillUnload。

所以注册Events事件的时候必须在界面销毁的时候把事件进行注销,不然下次调用则会重复执行Events中的注册的方法。