有没有办法手动删除页面,然后导航到它并使用ionic2重新初始化它

时间:2018-03-21 10:56:35

标签: angular ionic2

    import { Component } from '@angular/core';
    import { IonicPage, Nav, NavParams, App, ViewController } from 'ionic-angular';
    import { NewflightPage } from '../newflight/newflight';
    import { RolesactionPage } from '../rolesaction/rolesaction';
    import { EditProfilePage } from '../edit-profile/edit-profile';
    import { ManagePeoplePage } from '../manage-people/manage-people';
    import { HomePage } from '../home/home';
    @IonicPage()
    @Component({
      selector: 'page-main',
      templateUrl: 'main.html',
    })

    export class MainPage {
      constructor(public navCtrl: Nav, public navParams: NavParams, public viewCtrl: ViewController,public appCtrl: App) {
      }


      ionViewWillEnter() {
        var lc = document.createElement('script');
        lc.type = 'text/javascript';
        lc.src = 'assets/js/dialog.js';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(lc, s);

      }
      rolesAction() {
        this.navCtrl.push(RolesactionPage);
      }
      myFlightAction() {
        this.navCtrl.push(MainPage);

      }         
    }


Above is the my component code.

I am calling myFlightAction()  from main.html like below

 <a (click)="myFlightAction()"><img src="assets/imgs/flight-depart.png" alt="My Flights"> My Flights</a>

以下是我的component.ts文件代码

  • 列出项目

    'Go to work'

    请告诉我我错在哪里。当我在浏览器中检查时,它是新添加的z-index 101 ...每次都是这样。当我点击我的航班按钮时。 你能告诉我如何在每次页面加载时单独加载每个离子页面所需的java脚本文件吗?

1 个答案:

答案 0 :(得分:1)

您推送新页面的错误是什么?这样,它总是会有一个新页面,而不会忽略最后一页。对于这种情况,您需要做的是使用setRoot方法。

myFlightAction() {
  this.navCtrl.setRoot(MainPage);
}

请注意,这将清除您的导航堆栈,并将MainPage设置为您的第一页。

推送页面只是将另一个页面放在导航堆栈中,这就是为什么它为您推送的每个页面提供更高值z-index的原因。虽然setRoot顾名思义,但会将导航堆栈的root component设置为您想要的组件。

编辑 - 不从堆栈中删除登录页面。

您需要知道您所在页面的索引是什么,以便将其从堆栈中删除。由于我不知道页面的顺序以及如何相互访问,或者即使订单可以是动态的,我们首先得到页面控制器,以便e可以获得他的索引,然后推送另一个页面然后你将删除前一个。

myFlightAction() {
  // Get the controller of the active page
  const myActualController = this.navCtrl.getActive();
  // Get the index of the active page
  const pageIndex: number = this.navCtrl.indexOf(myActualController);
  // Push your new page
  this.navCtrl.push(MainPage).then(() => {
    // In the callback of your push method, after successfully pushing your the page, you'll remove this page based on his index.
    this.navCtrl.remove(pageIndex);
  });
}