美文网首页
ionic(20):完美解决返回登陆页面问题

ionic(20):完美解决返回登陆页面问题

作者: 告爬子 | 来源:发表于2019-01-10 14:34 被阅读14次
  1. 自退出登陆返回到登陆页面或者切换账号需要从APP返回到登陆页面时,有这么几种方法
    //方法1
    logOut() {
        this.modalCtrl.create(LoadingPage).present();
    }
    //之前一直用的这个方法,但是今天发现这样返回登陆页面时,再登陆后进入扫码界面的时候,扫码界面的背景会显示登陆页面,这个BUG决定了我在这里不能使用这种方法退出
    //方法2
    logOut() {
        this.app.getRootNav().setRoot("LoadingPage");
    }
    //这个方法返回后有BUG,tabs会显示在登陆页面上,所以实际上这个方法是不行的
    //方法3
    logOut() {
        this.navCtrl.push(LoadingPage);
    }
    //跳转到登陆页面去,这个方法很明显不行, 因为安卓物理返回键会退回到APP内,但是有一个方法解决,就是改写登陆页面的物理返回键的返回事件,我一度想这样做,但是没实现(技术有限),另外这样返回需要清缓存
  1. 完美解决问题的方法4
    //在tabs.ts页面添加下面代码
    import { NavController, NavParams, Tabs, Events } from 'ionic-angular';
    constructor(
        public navCtrl: NavController, 
        public navParams: NavParams,
        public events: Events,
        private nav: NavController
        )
    {
    }
    ionViewDidLoad() {
        this.listenEvents();
        // console.log('界面创建');
    }

    ionViewWillUnload() {
        this.events.unsubscribe('toLogin');
        // console.log('界面销毁');
    }

    listenEvents() {
        this.events.subscribe('toLogin', () => {
            this.nav.setRoot(LoadingPage);
            // this.nav.pop(); 使用这种方式也可以,但是会在登录框中默认填上值
            // console.log('返回登录');
        });
    }
    //返回的事件这样写
    logOut() {
        this.events.publish('toLogin');
    }
  1. 顺便记载一下退出APP
    import { NavController, AlertController, Platform, Events } from 'ionic-angular';
    logExit(){
        this.alertCtrl.create({
            title: '确认退出软件?',
            buttons: [{text: '取消'},
            {
                text: '确定',
                handler: () => {
                    this.platform.exitApp(); //退出APP回手机界面
                }
            }
            ]
        }).present();
    }
  1. 参考资料: Ionic3新页面去除Tabs的菜单问题总结

相关文章

网友评论

      本文标题:ionic(20):完美解决返回登陆页面问题

      本文链接:https://www.haomeiwen.com/subject/zzharqtx.html