Events:事件注册 在任意一界面注册事件以后可在任意界面根据事件名称进行调用。ionic
首先看一下官方文档的调用方式this
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 有三个方法 分别是:spa
this.events.publish () //注册Events事件 this.events.subscribe() //调用Eevents事件 this.events.unsubscribe() //注销Events事件
使用实例:code
Ionic2 升级Rc版以后,在Tabs的Menu页调用Push事件跳转到首页的时候下面的菜单仍是存在的,这样明显是不正常的。component
解决办法1:登陆页自动隐藏Tabs菜单。blog
解决办法2:在Tabs中注册一个返回登陆页得Events事件,经过Events返回首页。事件
登陆页的自动隐藏下次在记录。咱们如今采用最简单的方式 第二个办法。文档
Tabs界面代码:io
constructor(private nav: NavController, private events: Events) {
// this tells the tabs component which Pages
// should be each tab's root Pageconsole
}
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中的注册的方法。