15

Ionic 2 で戻るボタンのアクションを処理するにはどうすればよいですか?

どのページがユーザーに表示されているかに応じて、何をすべきかを知りたいです。

この質問に対する適切な答えは見つかりませんでしたが、しばらくして自分でそれを行う方法を見つけました。皆さんと共有します。

ありがとう

4

12 に答える 12

29

これが私がそれをした方法です:

すべての 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ます)。

于 2016-12-29T05:44:54.280 に答える
3

ここからのIonic 2 RC.4ドキュメントに従って:

registerBackButtonAction(callback, priority)APIのメソッドを使用Platformして、戻るボタンを押したときのアクションを登録できます。

戻るボタン イベントは、ユーザーがネイティブ プラットフォームの戻るボタン (「ハードウェア」の戻るボタンとも呼ばれる) を押すとトリガーされます。このイベントは、Android および Windows プラットフォームで実行されている Cordova アプリ内でのみ使用されます。このイベントは iOS では発生しません。これは、iOS には Android または Windows デバイスと同じ意味でのハードウェアの戻るボタンがないためです。

ハードウェアの戻るボタン アクションを登録し、優先度を設定すると、ハードウェアの戻るボタンが押されたときに呼び出されるアクションをアプリで制御できます。このメソッドは、登録された戻るボタン アクションのどれが最も優先度が高く、呼び出す必要があるかを決定します。

パラメーター :

  • callback : この登録されたアクションの優先度が最も高い場合、戻るボタンが押されたときに呼び出される関数。
  • priority : このアクションの優先度を設定する数値。最も優先度の高いものだけが実行されます。デフォルトは 0

戻り値: Function : 呼び出されると、戻るボタン アクションの登録を解除する関数。

于 2016-12-29T15:29:51.647 に答える