html代碼:
<ion-tabs #myTabs> <ion-tab [root]="tab1Root" tabTitle="首頁" tabIcon="home"></ion-tab> <ion-tab [root]="tab2Root" tabTitle="商家" tabIcon="cart"></ion-tab> <ion-tab [root]="tab3Root" tabTitle="我的" tabIcon="md-contact"></ion-tab> <div class="nav3" (click)="change()"></div> </ion-tabs>
tabs跳轉控制代碼
@IonicPage() @Component({ templateUrl: 'tabs.html' }) export class TabsPage { tab1Root = 'HomePage'; tab2Root = 'StoreNearbyPage'; tab3Root = 'MinePage'; @ViewChild('myTabs') tabRef: Tabs; constructor(public navCtrl: NavController) { } change() { if (localStorage.getItem('token')) { this.tabRef.select(2); } else { this.navCtrl.push('LoginPage') } } }
就是在我的tab欄上加了一個透明塊,點擊透明塊的時候如果已經登錄調用tab組件的select方法,選中tab實現跳轉配置頁面。如果未登錄就使用ionic的頁面跳轉。把登錄頁push進去。
用戶在我的tab欄下子頁面退出登錄,因為不能直接調用navCtrl.pop()方法返回我的頁面。
子頁面退出方法
import {IonicPage, NavController, NavParams, Navbar, App, ViewController} from 'ionic-angular'; out() { this.common.$http('DELETE', '/logout') .subscribe(res => { localStorage.clear(); this.appCtrl.getRootNav().push('TabsPage'); }) }
注入ionic-angular的APP模塊。直接把tab頁面丟回根導航。這樣在其他tab下面的子頁面退出的時候就能返回首頁了。
可能描述的不太好。至說出了個大概處理的思路。有想法的童鞋可以留言指導