我想在Ionic 2+应用程序中创建一个注销按钮。
我的问题是这样的:
当我单击ProfilePage上的注销按钮时,我将重定向到WelcomePage,然后进行第二次重定向回到ProfilePage(这是注销按钮所在的页面)。
如何阻止第二个重定向?
这是我的html代码:
</p>
<a href="#" (click)="logout()" button ion-button block color="danger" icon-start>
<ion-icon name='log-out'></ion-icon>
Se déconnecter
</a>
和我的JS功能:
logout(){
this.navCtrl.push('WelcomePage');
}
在此先感谢您的帮助
最佳答案
因此,Ionic正在使用所谓的“导航堆栈”,其中(应该是)有一个根页面,然后其他页面可能是:
替换rootPage或
被推到顶部(=堆叠在顶部)
可以将Ionic Nav Stack视为这种硬币类比:
因此,您可以替换初始硬币(您的rootPage就是这样的硬币),并且可以放入更多硬币(页面)或从堆栈中弹出它们(删除页面)。
现在,您的问题-在您的情况下,您似乎不在其他页面上执行弹出操作/也没有替换rootPage,或者以其他方式正确管理堆栈。
根据您的用户体验,您可能希望使用户返回到其登录时出现的应用程序状态。
通常,如果您的原始(rootPage)是“欢迎页面”,则要做的是使用以下方法返回该页面(rootPage)
https://ionicframework.com/docs/api/navigation/NavController/#popToRoot
因此,根据您的根页面是什么(不幸的是,您没有提供具有该上下文的代码),您可以:
logout(){
this.navCtrl.popToRoot();
}
我建议您考虑一下您的导航堆栈策略,然后决定何时分配新的rootPage以及何时推送/弹出。
以我的经验,当我将整个页面/主题/主题导航到用户时,我通常总是替换rootPage,并且仅在其与rootPage相关的另一个页面/模式时才使用push。
另一种研究方式:您不希望堆栈太大(不断推入新页面),也不希望用户“返回”(弹出)超过2-3层。