在我的Ionic应用程序中,有一个页面可以创建invoice
。我正在开具发票,中间需要打开statement of accounts
。
现在,如果从statement of accounts
中按返回按钮,则我的部分填充 invoice
表单将打开,而不会丢失任何数据。
但是,如果我从菜单中打开invoice
表单,它将打开一个新的具有相同表单的黑色会话。
我希望它打开已经打开的,部分填充的invoice
表单。
这是我从app.html
页面上调用页面的方式:
<ion-item class="DropDown-Expand" menuClose (click)="nav.push(page.StatacPage)">
<ion-icon name="document"></ion-icon><span>Ledger</span>
</ion-item>
答案 0 :(得分:1)
然后检查您的发票页面是否已经在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>
有关NavController如何工作的更多信息,请参阅NavControllers docs。