如何处理Ionic Sidemenu应用程序中的后退按钮?

时间:2018-10-13 09:38:09

标签: javascript typescript ionic-framework ionic3

我正在开发具有以下页面的Ionic v3应用程序: LoginPage, MenuPage(SideMenu)。

我从菜单打开以下页面: 仪表板页面 个人资料页

我使用this.navCtrl.setRoot(MenuPage)从LoginPage导航到MenuPage

现在,当我尝试处理 menu.ts 中的后退按钮时。 if的{​​{1}}块工作正常,但是当我按下 ProfilePage 中的后退按钮时,它显示错误。我尝试了在不同论坛中找到的许多解决方案,但没有一个对我有帮助。

registerBackButton()

错误日志

rootPage = DashboardPage;
...
registerBackButton(){
        this.platform.registerBackButtonAction(() => {
            let view = this.nav.getActive();
            if (view.component.name == "DashboardPage"){ //if-block
                //Double check to exit app
                if (new Date().getTime() - this.lastTimeBackPress < this.timePeriodToExit) {
                    this.platform.exitApp(); //Exit from app
                } else {
                        let toast = this.toastCtrl.create({
                            message:  'Press back again to exit App?',
                            duration: 3000,
                            position: 'bottom'
                        });
                        toast.present();
                        this.lastTimeBackPress = new Date().getTime();
                }
            }else{ //else-block 
                this.nav.pop(); //here it shows error
            }
        });

1 个答案:

答案 0 :(得分:-1)

使用setRoot()方法时,所有页面将从导航堆栈中删除。因此,您不能从空的导航堆栈中调用pop()。要调用pop(),导航堆栈中至少应有一页。根据您的情况,您在空的导航堆栈上调用pop()。您的要求在这里不清楚,但是如果要在MenuPage中调用pop(),请使用this.navCtrl.push(MenuPage)而不是this.navCtrl.setRoot(MenuPage)