代码之家  ›  专栏  ›  技术社区  ›  user2828442

ionic navctrl.push打开页面的新会话,但我需要已经打开一个

  •  0
  • user2828442  · 技术社区  · 7 年前

    在我的离子型应用程序中,我有一个页面要创建 invoice . 我正在开发票,中间我需要开 statement of accounts .

    现在,如果来自 会计报表 我按下后退按钮,我的 部分填充 发票 表单打开后不会丢失任何数据。

    但是,如果我打开 发票 窗体从菜单中,它将打开同一窗体的新黑色会话。

    我想打开已经打开的,部分填充的 发票 形式。

    这就是我如何从我的 app.html 页:

    <ion-item class="DropDown-Expand" menuClose (click)="nav.push(page.StatacPage)">
      <ion-icon name="document"></ion-icon><span>Ledger</span>
    </ion-item>
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Phonolog    7 年前

    然后检查您的发票页是否已经在NavControllers堆栈上,并弹出它(如果它已经存在于NavControllers堆栈中)或推送它的新实例(如果它不存在于NavControllers堆栈中)。

    执行此操作的方法的代码可能如下所示(假设 this.navCtrl 保存一个navcontroller实例,可以找到有关注入它的更多信息 here ):

     moveTo(pageToMoveTo: Page): void {
        let views = this.navCtrl.getViews();
        let viewToMoveTo = views.find((viewController) => viewController.instance instanceof pageToMoveTo);
        if (viewToMoveTo === undefined) {
          //If the page is not yet on the navControllers stack, push it
          this.navCtrl.push(pageToMoveTo);
        } else {
          //If the page is on the stack, find the pages index
          let indexToMoveTo = this.navCtrl.getByIndex(viewToMoveTo.index);
          //And pop to this index
          this.navCtrl.popTo(indexToMoveTo);
        }
    }
    

    在HTML中,您应该可以这样使用它:

    <ion-item class="DropDown-Expand" menuClose (click)="moveTo(page.StatacPage)">
      <ion-icon name="document"></ion-icon><span>Ledger</span>
    </ion-item>
    

    有关导航控制器工作方式的更多信息,请参阅 NavControllers docs .