ionic3之页面跳转的两种方式-yellowcong

爱被打了一巴掌 2022-05-31 11:57 322阅读 0赞

在ionic中,页面条状主要有两种方式,1、通过在界面中[navPush]="morePage"的方式,2、通过代码的方式跳转,绑定事件(click)="pushMorePage()",通过调用这个事件的同时,我们可以在这个里面添加参数的传递,主要依赖于 NavController,NavParams这两个组建

代码地址

  1. https://gitee.com/yellowcong/ionic/tree/master/ionic3-param

界面跳转方式

home.ts

在这个界面中,我们导入了NavController ,这个东西可以控制界面的跳转,一般在界面跳转中,都是通过这个来进行界面跳转的,在初始化的时候,就会注入NavController

  1. import { Component } from '@angular/core';
  2. //NavController就是用来管理和导航页面的一个controlle
  3. import { NavController } from 'ionic-angular';
  4. //导入more 的界面
  5. import { MorePage } from '../more/more';
  6. @Component({
  7. selector: 'page-home',
  8. templateUrl: 'home.html'
  9. })
  10. //暴漏HomePage组建
  11. export class HomePage {
  12. //定义一个属性
  13. morePage;
  14. //注入一个NavController的实例.
  15. constructor(public navCtrl: NavController) {
  16. this.morePage = MorePage;
  17. }
  18. //通过代码的方式跳转
  19. pushMorePage(){
  20. console.log("代码方式跳转");
  21. //跳转到指定页面
  22. this.navCtrl.push(MorePage);
  23. }
  24. }

home.html

这个地方设定了两个跳转的方式,一个是通过界面的方式,还有一个是通过后台的pushMorePage()事件来跳转界面

  1. <ion-header>
  2. <ion-navbar>
  3. <ion-title>Home</ion-title>
  4. </ion-navbar>
  5. </ion-header>
  6. <ion-content padding>
  7. <h2>Welcome to Ionic!</h2>
  8. <p>
  9. 测试界面
  10. </p>
  11. <!--跳转到morePage上面去-->
  12. <button ion-button [navPush]="morePage">界面方式跳转</button>
  13. <!--通过事件的方式-->
  14. <button ion-button (click)="pushMorePage()">代码方式跳转</button>
  15. </ion-content>

参数传递

home.ts

参数传递和界面跳转,有一定联系,通过NavController.push进行界面的跳转,第二个参数,可以传递一个集合对象,将参数传递到下一个界面中。

  1. import { Component } from '@angular/core';
  2. //NavController就是用来管理和导航页面的一个controlle
  3. import { NavController } from 'ionic-angular';
  4. //导入more 的界面
  5. import { MorePage } from '../more/more';
  6. @Component({
  7. selector: 'page-home',
  8. templateUrl: 'home.html'
  9. })
  10. //暴漏HomePage组建
  11. export class HomePage {
  12. //定义一个属性
  13. morePage;
  14. //注入一个NavController的实例.
  15. constructor(public navCtrl: NavController) {
  16. this.morePage = MorePage;
  17. }
  18. //通过代码的方式跳转
  19. pushMorePage(){
  20. console.log("代码方式跳转");
  21. //跳转到指定页面, 后面的集合是一个参数
  22. this.navCtrl.push(MorePage,{
  23. title:'我是上一个界面搞来的'
  24. });
  25. }
  26. }

more.ts

more.ts是跳转的目标界面,可以通过NavParams 这个对象,来接收前面界面传递过来的参数。然后可以通过NavController.pop()方法,退出当前的界面,反回到上一层。

  1. //@angular/core是一个npm的模块,定义了angular的核心功能
  2. import { Component } from '@angular/core';
  3. //NavController就是用来管理和导航页面的一个controlle
  4. //NavParams 这个是参数
  5. import { NavController,NavParams } from 'ionic-angular';
  6. @Component({
  7. //为页面指定选择器的名称
  8. //在ionic 3.x中规范为 page- 开头,为了不造成混乱,需要保持每个页面selector的唯一性
  9. //可以直接通过templateUrl 来引用html,而不直接使用template
  10. //模板的字符串,里面其实就是html代码
  11. //template: `<h1>Hello World!</h1>`
  12. //可以直接通过templateUrl 来引用html,而不直接使用template
  13. selector: 'page-more',
  14. templateUrl: 'more.html'
  15. })
  16. //export关键词:将类暴露出去,以便其它的文件可以import到它。
  17. //类的命名:在ionic3中,页面类采用页面名+Page的命名方式,首字母大写,如HomePage, ContactPage等。
  18. export class MorePage {
  19. //声明传递进来的变量
  20. title:string;
  21. constructor(public navCtrl: NavController,public params:NavParams) {
  22. //获取传递过来的参数
  23. this.title=this.params.get('title');
  24. //当参数没有定义的情况
  25. if(this.title == undefined){
  26. this.title = "没有获取到结果";
  27. }
  28. }
  29. //返回到上一个界面
  30. pushHomePage(){
  31. this.navCtrl.pop();
  32. }
  33. }

运行效果

参数代码的传递,我这个地方的做法是后台设置
这里写图片描述

界面跳转原理

所有的界面像栈一样,画面不断的进入,就不断的增加,新的画面把旧的画面给盖住了
这里写图片描述

退出的时候,使用pop函数,退出界面,释放内存
这里写图片描述

TabsPage

这个比较的特殊,一个TabsPage里面,包含了多个tab ,而每个tab都有一个单独的界面栈,在tab之间切换的时候,看到的都是每个tab的最上面一个界面。
这里写图片描述

参考文章

https://www.jianshu.com/p/de40aeb3d371

发表评论

表情:
评论列表 (有 0 条评论,322人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ionic3页面功能

    最劲再用 ionic3 +  angular4 开发小程序,这期间遇到了一些坑,下边总结一下页面间跳转的文档 前提 :       (1)首先要引用“导航控制器” `Nav