在RC0中获取当前页面/视图名称返回“t”



我希望处理硬件后退按钮,我需要获取当前视图的名称。

console.log(this.nav.getActive());
 console.log(this.navCtrl.getActive().component.name);

这只返回设备上的字母 t,但在浏览器中确实有效。

请让我知道如何在设备上获取页面/视图名称以处理后退按钮

问题是 webpack 在设备上运行应用程序时会

缩小代码(我猜是 --prod 标志(,这就是为什么在浏览器上工作时名称正确,但在设备上运行应用程序时t显示为名称。为了避免这种情况,您可以使用instanceof运算符来检查页面是否是您正在寻找的页面来执行某些操作。

这是我在我处理过的其中一个应用程序中处理后退按钮的方式:

this.platform.registerBackButtonAction(() => {
    this.handleBackButton();
});

然后

private handleBackButton(): void {
    // Prevent to dismiss a modal when another modal is being dismissed
    let ready = true;
    let activePortal = this.ionicApp._loadingPortal.getActive() ||
        this.ionicApp._modalPortal.getActive() ||
        this.ionicApp._toastPortal.getActive() ||
        this.ionicApp._overlayPortal.getActive();
    if (activePortal) {
        ready = false;
        activePortal.dismiss();
        activePortal.onDidDismiss(() => { ready = true; });
        return;
    }
    if (this.menuCtrl.isOpen()) {
        this.menuCtrl.close();
        return;
    }
    let view = this.navCtrl.getActive();
    let page = view ? this.navCtrl.getActive().instance : null;
    if (page && (page instanceof HomePage || page instanceof SignInPage)) {
        this.platform.exitApp();
    }
    else if (this.navCtrl.canGoBack() || view && view.isOverlay) {
        this.navCtrl.pop();
    } else {
        this.accountService.isLoggedIn() ? this.navCtrl.setRoot(HomePage) : this.navCtrl.setRoot(SignInPage);
    }
}

正如您在代码中看到的,我使用 instanceof 运算符检查视图是否为特定视图

page instanceof HomePage

这样,即使 webpack 缩小了代码,它也应该可以工作。

相关内容

  • 没有找到相关文章

最新更新