Ionic 2 で戻るボタンのアクションを処理するにはどうすればよいですか?
どのページがユーザーに表示されているかに応じて、何をすべきかを知りたいです。
この質問に対する適切な答えは見つかりませんでしたが、しばらくして自分でそれを行う方法を見つけました。皆さんと共有します。
ありがとう
Ionic 2 で戻るボタンのアクションを処理するにはどうすればよいですか?
どのページがユーザーに表示されているかに応じて、何をすべきかを知りたいです。
この質問に対する適切な答えは見つかりませんでしたが、しばらくして自分でそれを行う方法を見つけました。皆さんと共有します。
ありがとう
これが私がそれをした方法です:
すべての Page コンポーネントで、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
が存在するかどうかを確認して呼び出します。存在しない場合は、メイン/最初のタブに移動します。
すべてのページに対してカスタマイズされたアクションを実行する必要がなければ、これを簡素化できます。アプリをポップまたは終了するだけです。
この特定のページでモーダルが開いているかどうかを確認する必要があったため、このようにしました。
コード:
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
ます)。
ここからのIonic 2 RC.4ドキュメントに従って:
registerBackButtonAction(callback, priority)
APIのメソッドを使用Platform
して、戻るボタンを押したときのアクションを登録できます。
戻るボタン イベントは、ユーザーがネイティブ プラットフォームの戻るボタン (「ハードウェア」の戻るボタンとも呼ばれる) を押すとトリガーされます。このイベントは、Android および Windows プラットフォームで実行されている Cordova アプリ内でのみ使用されます。このイベントは iOS では発生しません。これは、iOS には Android または Windows デバイスと同じ意味でのハードウェアの戻るボタンがないためです。
ハードウェアの戻るボタン アクションを登録し、優先度を設定すると、ハードウェアの戻るボタンが押されたときに呼び出されるアクションをアプリで制御できます。このメソッドは、登録された戻るボタン アクションのどれが最も優先度が高く、呼び出す必要があるかを決定します。
パラメーター :
戻り値: Function : 呼び出されると、戻るボタン アクションの登録を解除する関数。