[TOC]
目的一:单页面进行push,并返回上一级 目的二:单页面进行setRoot(),并返回上一级
//进入pushsingle页面,并传递参数名为test值为my god
openPushPage(){
this.navCtrl.push('PushsinglePage',{test: 'my god'});
}
// pushsingle页面获取参数
constructor(public navCtrl: NavController, public navParams: NavParams) {
this.test = this.navParams.get("test");
}
// 将【setrsingle】页面设置为根页面
openStrPage(){
this.navCtrl.setRoot('SetrsinglePage',{title:'test the param'})
}
// 返回单页面测试路由,实质是将【单页面测试路由】设置为根页面。缺点:无法回到【路由学习】页面
openNextPage(): void {
this.navCtrl.setRoot('SinglePage')
}
- 如果页面有
<ion-navbar>,则后退按钮将自动添加到推送视图。- ionic APP中的页面实质上是一个栈的结构,但从当前页面上引入一个新页面时,浏览器(或操作系统)会加载新页面的资源,然后把它添加到栈顶。在界面上的表现就是,新页面“遮住了”原有的页面,下层页面的内容和资源依旧在内存中。
而上层页面被pop掉的时候,上层页面弹出栈,相应的内存被释放(在图中栈顶由C变成了B),在视觉表现上就是上面的页面被“移开”了,下层的页面“暴露了出来”。
所以APP中的页面是有层级关系的,用户在首页一层一层地进入了新页面(A->B->C),回到首页时就得一层一层退出来(C->B->A), 如果将某个页面设置为根元素,也就是将栈清空该页面入栈。
目的一: 从[路由学习页面]push页面进栈,返回上一级(报错) 目的二: 从tab页面进入到其他页面,然后返回上一级
无返回上一级的按钮,那么人为添加按钮,返回上一级。
加入按钮

- 页面代码
<ion-content padding>
注意看,是否能回到上一级。<br/>
<button ion-button (click)="gotoPrevious()">返回[路由学习]界面</button>
</ion-content>
- ts代码:
gotoPrevious(): void {
this.navCtrl.pop();
}
点击人为添加的返回按钮,返回contact页面
同理about页面也进入下一级页面

// 返回上一级
gotoPrevious():void{
this.navCtrl.pop();
}
// 到下一个页面
gotoNext(): void {
this.navCtrl.push('NextPage');
}
目的一: 从[路由学习页面]push页面进栈,返回上一级(报错) 目的二: 从list页面进入到其他页面,然后返回上一级
- 页面代码
<ion-content padding>
注意是否能返回上一个页面!
<button ion-button (click)="popPage()">返回的【路由学习界面】</button>
</ion-content>
- ts代码
popPage():void{
this.navCtrl.pop();
}
- 页面代码
<ion-list>
<button ion-item *ngFor="let item of items" (click)="itemTapped($event, item)">
</ion-list>
- ts代码
itemTapped(event, item) {
// That's right, we're pushing to ourselves!
this.navCtrl.push(ListPage, {
item: item
});
}
看代码,发现用的导航不是用的注入方式,而是使用一个注解进行路由,为什么? 详解: 因为我们是在A页面导航
<ion-nav [root]='homePage'>,嵌入B页面,然后想导航到C页面,B->C是很容易的事情,但是如果我们想通过A(也就是根页面)->C,是不能路由的(这句话不大正确,是可以路由,但不是正确的效果),必须借用<ion-nav>这个组件来监听子组件,然后通过子组件去导航到C。如果是注入NavController来跳转到C,C页面会将A页面覆盖;如果是通过子组件去导航,则会在<ion-nav>中显示。 注入方式:注解方式:
1.从某个界面push一个side界面,其实质同setRoot()方法是同样的,重新设置了根页面。如果从side的每个页面试图返回上一级,则会报导航栈至少需要一个root页面。
https://ionicframework.com/docs/api/components/nav/NavPush/ https://ionicframework.com/docs/api/components/nav/NavPop/ https://segmentfault.com/a/1190000012145193#articleHeader13 http://www.ionic.wang/article-index-id-94.html









