web-dev-qa-db-fra.com

Ionic 4 alternative pour platform.registerBackButtonAction

J'ai regardé autour de la nouvelle plate-forme pour le Ionic 4, il semble que la fonction registerBackButtonAction en ait été supprimée.

Existe-t-il d'autres alternatives pour gérer le Android bouton de retour matériel?

6
nimzz

Mise à jour: Cela a été corrigé dans dfac9dc


Connexes: comment intégrer le bouton de retour matériel dans la navigation ionic4


Ceci est suivi sur GitHub , dans les Ionic Forums et Twitter
Jusqu'à ce qu'il existe un correctif officiel, vous pouvez utiliser cette solution de contournement:

this.platform.backButton.subscribe(() => {
  // code that is executed when the user pressed the back button
})

// To prevent interference with ionic's own backbutton handling
// you can subscribe with a low priority instead
this.platform.backButton.subscribeWithPriority(0, () => {
  // code that is executed when the user pressed the back button
  // and ionic doesn't already know what to do (close modals etc...)
})

Sachez que vous devez enregistrer le résultat de subscribe(...) si vous souhaitez vous désinscrire à nouveau.


Ancienne réponse: (obsolète depuis avril 2018)

registerBackButtonAction est juste un wrapper pour appel Cordova correspondant .

Vous pouvez donc simplement transférer votre ancien appel vers registerBackButtonAction:

this.platform.registerBackButtonAction(() => { 
  // code that is executed when the user pressed the back button
});

et remplacez-le par:

this.platform.ready().then(() => {
  document.addEventListener("backbutton", () => { 
    // code that is executed when the user pressed the back button
  });
});
19
Fabian N.

j'ai essayé

"@ionic/angular": "^4.7.0-dev.201907191806.32b736e",
"@ionic/core": "^4.7.0-dev.201907191806.32b736e",

ça marche!

commit git ionique https://github.com/ionic-team/ionic/commit/978cc39009a9a0fb065540ce17e10c685b6c101a

1
biubiushun

Dans le cas de @ ionic/vue, vous pouvez mettre ceci (ou quelque chose comme ça) dans main.js

import { Plugins } from '@capacitor/core'

Plugins.App.addListener('backButton', function() {
  console.log(111);
  window.history.back();
});

Non, non, console.log(111); n'est pas une erreur, cela fait partie de la solution :)

0
Narek Sahakyan