Вот как я это сделал:
В каждом компоненте страницы, я создал функцию, называемую backButtonAction()
, которая будет выполнять пользовательский код для каждой страницы.
Код:
import { Component } from '@angular/core';
import { Platform, NavController, ModalController } from 'ionic-angular';
import { DetailsModal } from './details';
@Component({
selector: 'page-appointments',
templateUrl: 'appointments.html'
})
export class AppointmentsPage {
modal: any;
constructor(private modalCtrl: ModalController, public navCtrl: NavController, public platform: Platform) {
// initialize your page here
}
backButtonAction(){
/* checks if modal is open */
if(this.modal && this.modal.index === 0) {
/* closes modal */
this.modal.dismiss();
} else {
/* exits the app, since this is the main/first tab */
this.platform.exitApp();
// this.navCtrl.setRoot(AnotherPage); <-- if you wanted to go to another page
}
}
openDetails(appointment){
this.modal = this.modalCtrl.create(DetailsModal, {appointment: appointment});
this.modal.present();
}
}
И в app.component.ts
, я использовал метод platform.registerBackButtonAction
для регистрации обратного вызова, которая будет вызываться каждый раз, когда кнопка нажата назад. Внутри я проверяю, существует ли функция backButtonAction
на текущей странице и вызывает ее, если она не существует, просто перейдите на вкладку main/first.
Это можно упростить, если им не нужно выполнять индивидуальные действия для каждой страницы. Вы можете просто выйти или выйти из приложения.
Я сделал это так, потому что мне нужно было проверить, открыт ли модальный на этой странице.
Код:
platform.registerBackButtonAction(() => {
let nav = app.getActiveNav();
let activeView: ViewController = nav.getActive();
if(activeView != null){
if(nav.canGoBack()) {
nav.pop();
}else if (typeof activeView.instance.backButtonAction === 'function')
activeView.instance.backButtonAction();
else nav.parent.select(0); // goes to the first tab
}
});
, если текущая страница является первая закладка, приложение закрывается (как это определено в методе backButtonAction
).
Почему на земле ответы ниже на этот вопрос так трудно и не чувствовать себя как осуществление? :(Что было бы самым простым и простым способом? –