离子2侧面菜单和注销和后退键导航

时间:2017-06-06 12:07:41

标签: ionic2

我正在尝试实现注销功能。我正在使用FB身份验证。我的问题是在我成功注销后(这从Side菜单中发生)我返回登录屏幕。但现在,如果我点击设备的后退按钮,它会将我带到主页(。任何想法如何防止这种情况?

这是我的app.component.ts

import { Component, ViewChild } from '@angular/core';
import { Platform, Nav, AlertController } from 'ionic-angular';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { LoginPage } from '../pages/login/login';
import { NativeStorage } from '@ionic-native/native-storage';
import { TabsPage } from '../pages/tabs/tabs';
import { Facebook } from 'ionic-native';
@Component({
  templateUrl: 'app.html',

})
export class MyApp {
  @ViewChild(Nav) nav: Nav;
  rootPage: any = LoginPage;

  constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen, private nativeStorage: NativeStorage, private alertCtrl: AlertController) {
    platform.ready().then(() => platform.ready().then(() => {
      this.nativeStorage.getItem("userId").then((data) => {
        console.log(data.userExists);
        this.rootPage = TabsPage;
        this.nav.push(TabsPage);

      }, (error) => {
        console.log("No data in storage");
        this.nav.push(LoginPage);
      })
      statusBar.styleDefault();
      splashScreen.hide();
    })

    )
  }

  presentConfirm() {
    let alert = this.alertCtrl.create({
      title: "Confirm Logout",
      message: "Do you really really want to quit this awesome app?",
      buttons: [{
        text: 'Nah! Just Kidding!', role: 'cancel', handler: () => {
        }
      },
      {
        text: "Ok",
        handler: () => {
          this.nativeStorage.clear();
          this.nav.push(LoginPage);         
          this.rootPage = LoginPage;
          Facebook.logout().then((response) => {
          }, (error) => {
          })
        }
      }]
    });
    alert.present();
  }

}

这是我的登录页面。 Login.ts

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Facebook } from 'ionic-native';
import { NativeStorage } from '@ionic-native/native-storage';
import { TabsPage } from '../tabs/tabs'

@Component({
  selector: 'login-home',
  templateUrl: 'login.html'
})
export class LoginPage {

  constructor(public navCtrl: NavController, private nativeStorage: NativeStorage) {

  }

  FBLogin() {
    //this.navCtrl.push(TabsPage); - To be used on browser environment
    Facebook.login(['email']).then((response) => {
      Facebook.getLoginStatus().then((response) => {
        if (response.status == 'connected') {
           this.navCtrl.push(TabsPage); // - to be used on device
          console.log("Setting Storage")
          this.nativeStorage.setItem("userId", { userExists: true });         
          Facebook.api('/' + response.authResponse.userID + '?fields=id,name,gender', []).then((response) => {
          }, (error) => {
            alert(error)
          })
        }
        else
          alert("Not Logged in");
      })

    }, (error) => {
      console.log((error));
    })
  }


}

这是我的菜单

<ion-menu swipeEnabled="false" side="right" [content]="content">
  <ion-toolbar>
    <ion-title>Menu</ion-title>
  </ion-toolbar>
   <ion-content>
    <ion-list>      
     <p>&nbsp;</p>
      <button  menuClose padding-top ion-item> Test 1 </button>       
      <button menuClose ion-item> Test 2 </button>
      <button menuClose ion-item (click)="presentConfirm()"><ion-icon name="power"></ion-icon>&nbsp;&nbsp;Logout </button>
    </ion-list>
  </ion-content>
 </ion-menu>
<ion-nav id="nav" [root]="rootPage" #content swipe-back-enabled="false"></ion-nav>

1 个答案:

答案 0 :(得分:2)

你正在做的问题是:

$url = get_field('bothscoreno');
if ($url) {
   echo substr($url, 11, 6);
} else {
    echo "No.";
}

在您的退出处理程序中。 这意味着 this.nav.push(LoginPage); 会添加到旧导航堆栈的顶部。您需要设置一个新堆栈并以root身份设置LoginPage。 做:

LoginPage