• Ionic2 rc2 Events 跨界面调用的使用方法及问题解决


    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中的注册的方法。
  • 相关阅读:
    一月份反思内容:BUG & Communicate
    重构一个繁琐的数据结构
    GTD(Get Things Done)
    SortedList<TKey,TValue> 和 SortedDictionary<TKey,TValue>
    对Ado.net Entity Data Model Designer很失望
    A class to clone objects
    collection.All(x=> whatever(x)) 与 collection.Any(x=>whatever(x))
    Asp.net MVC里的TempData是一个整体
    Some tips about ubuntu server | or it may works on other linux distributions too
    每个程序员都必须遵守的编程原则
  • 原文地址:https://www.cnblogs.com/super-cj/p/6113971.html
Copyright © 2020-2023  润新知