选项卡
Tabs为多标签界面提供了一个Tab Bar和一组可以标签化的视图。
有关详细信息,请查看Tabs API文档和Tab API文档。
基本使用
要初始化选项卡,请使用<ion-tabs>,每个选项卡都有一个子<ion-tab>:
import { Component } from '@angular/core';
import { ionicBootstrap } from 'ionic-angular';
import { Tab1 } from './tab1-page';
import { Tab2 } from './tab2-page';
@Component({
template: `
<ion-tabs>
<ion-tab tabIcon="heart" [root]="tab1"></ion-tab>
<ion-tab tabIcon="star" [root]="tab2"></ion-tab>
</ion-tabs>`
})
class MyApp {
tab1: any;
tab2: any;
constructor() {
this.tab1 = Tab1;
this.tab2 = Tab2;
}
}
单个选项卡只是@Components
import { Component } from '@angular/core';
@Component({
template: `
<ion-header>
<ion-navbar>
<ion-title>Heart</ion-title>
</ion-navbar>
</ion-header>
<ion-content>Tab 1</ion-content>`
})
export class Tab1 {}
@Component({
template: `
<ion-header>
<ion-navbar>
<ion-title>Star</ion-title>
</ion-navbar>
</ion-header>
<ion-content>Tab 2</ion-content>`
})
export class Tab2 {}
请注意,每个<ion-tab>绑定到[root]属性,就像上面导航部分的<ion-nav>一样。 那是因为每个<ion-tab>只是一个导航控制器。 这意味着每个选项卡都有自己的历史堆栈,并且注入每个选项卡的子项@Components的NavController实例对每个选项卡都是唯一的:
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
@Component({
...
})
class Tab1 {
constructor(public navCtrl: NavController) {
// Id is 1, nav refers to Tab1
console.log(this.nav.id)
}
}
@Component({
...
})
class Tab2 {
constructor(public navCtrl: NavController) {
// Id is 2, nav refers to Tab2
console.log(this.nav.id)
}
}
效果:
图标选项卡
要添加一个标签内的图标,使用 tab-icon 属性。该属性可以传递任何图标的名称:
@Component({
template: `
<ion-header>
<ion-navbar>
<ion-title>Tabs</ion-title>
</ion-navbar>
</ion-header>
<ion-content></ion-content>
`
})
class TabContentPage {
constructor() {}
}
@Component({
template: `
<ion-tabs>
<ion-tab tabIcon="contact" [root]="tab1"></ion-tab>
<ion-tab tabIcon="compass" [root]="tab2"></ion-tab>
<ion-tab tabIcon="analytics" [root]="tab3"></ion-tab>
<ion-tab tabIcon="settings" [root]="tab4"></ion-tab>
</ion-tabs>`
})
export class TabsIconPage {
constructor() {
this.tab1 = TabContentPage;
this.tab2 = TabContentPage;
...
}
}
效果:
图标+文字选项卡
要在选项卡内添加文本和图标,请使用 tab-icon 和 tab-title 属性:
@Component({
template: `
<ion-header>
<ion-navbar>
<ion-title>Tabs</ion-title>
</ion-navbar>
</ion-header>
<ion-content></ion-content>
`
})
class TabsTextContentPage {
constructor() {}
}
@Component({
template: `
<ion-tabs>
<ion-tab tabIcon="water" tabTitle="Water" [root]="tab1"></ion-tab>
<ion-tab tabIcon="leaf" tabTitle="Life" [root]="tab2"></ion-tab>
<ion-tab tabIcon="flame" tabTitle="Fire" [root]="tab3"></ion-tab>
<ion-tab tabIcon="magnet" tabTitle="Force" [root]="tab4"></ion-tab>
</ion-tabs>`
})
export class TabsTextPage {
constructor() {
this.tab1 = TabsTextContentPage;
this.tab2 = TabsTextContentPage;
...
}
}
效果:
带徽章的选项卡
要向选项卡添加徽章,请使用tabBadge和tabBadgeStyle属性。 tabBadgeStyle属性可以传递任何颜色的名称:
@Component({
template: `
<ion-header>
<ion-navbar>
<ion-title>Tabs</ion-title>
</ion-navbar>
</ion-header>
<ion-content></ion-content>
`
})
class TabBadgePage {
constructor() {}
}
@Component({
template: `
<ion-tabs>
<ion-tab tabIcon="call" [root]="tabOne" tabBadge="3" tabBadgeStyle="danger"></ion-tab>
<ion-tab tabIcon="chatbubbles" [root]="tabTwo" tabBadge="14" tabBadgeStyle="danger"></ion-tab>
<ion-tab tabIcon="musical-notes" [root]="tabThree"></ion-tab>
</ion-tabs>
`
})
export class BadgesPage {
constructor() {
this.tabOne = TabBadgePage;
this.tabTwo = TabBadgePage;
}
}
有关选项卡的更多信息,请查看Tabs API参考。