【发布时间】:2019-03-27 20:50:02
【问题描述】:
我正在使用 Ionic 中的选项卡式模板构建应用程序。它有 4 个按钮。 .
当用户退出时,第四个按钮应该把他们带到上面的登录/注册页面。
当他们登录时,应该会显示一个注销按钮,如上所示。
下面是我在tabs.html 中显示我的标签的代码:
<ion-tabs>
<ion-tab [root]="tab1Root" tabTitle="Home" tabIcon="home"></ion-tab>
<ion-tab [root]="tab2Root" tabTitle="Search" tabIcon="search"></ion-tab>
<ion-tab [root]="tab3Root" tabTitle="List Providers" tabIcon="list"></ion-tab>
<ion-tab [root]="tab4Root" tabTitle="Login/Register" tabIcon="finger-print" *ngIf="loggedIn"></ion-tab>
<ion-tab tabTitle="Logout" tabIcon="exit" (click)="logout()" *ngIf="!loggedIn"></ion-tab>
</ion-tabs>
当我通过在tabs.ts 中手动设置布尔变量loggedIn 的值来测试这种安排时,它按预期工作。
我想要的是选项卡自动切换,具体取决于用户是否登录。当用户成功登录时,我将本地存储中的值 loggedIn 设置为 true。然后我在tabs.ts 中有下面的代码,它应该切换登录/注销按钮:
loggedIn: boolean = false;
ionViewWillEnter(): void {
if (localStorage.getItem('loggedIn') == 'true') {
this.loggedIn = true;
console.log("we are logged in!");
} else {
this.loggedIn = false;
console.log("we are logged out");
}
}
然而问题是,尽管变量loggedIn 的值被正确设置和更改,tabs.html 中的视图并没有更新为显示注销按钮,它仍然显示登录/注册按钮。每次单击按钮时,如何让选项卡刷新?我曾尝试将代码添加到 ionViewWillEnter() 函数,但它不起作用。任何帮助将不胜感激!
我的系统:
$ ionic info
Ionic:
ionic (Ionic CLI) : 4.0.3 (/usr/local/lib/node_modules/ionic)
Ionic Framework : ionic-angular 3.9.2
@ionic/app-scripts : 3.2.0
Cordova:
cordova (Cordova CLI) : 8.0.0
Cordova Platforms : android 7.0.0
System:
Android SDK Tools : 26.1.1
NodeJS : v8.10.0 (/usr/bin/node)
npm : 3.5.2
OS : Linux 4.15
Environment:
ANDROID_HOME : /home/user/Android/Sdk
【问题讨论】:
-
所以当您点击此页面时,您会在控制台中看到
we are logged in!? -
@BRass 是的。此外,loggedIn 的值也是 true。
标签: ionic-framework ionic2 ionic3