2015-05-27 18 views
6

Ecco i passaggi per riprodurre:ionico registerBackButtonAction non funziona

  1. Creare un progetto ionico di base "prova di avviamento ionica sidemenu"
  2. Aggiungi la piattaforma Android "piattaforma ionica aggiungere Android"
  3. In app.js aggiungere il codice:

    $ionicPlatform.registerBackButtonAction(function (event) { 
        alert("back button action handler");    
        event.preventDefault(); 
    }, 999); 
    

    Questo codice può essere aggiunto nel metodo .run o nel $ ionicPlatform.ready() il metodo - lo stesso risultato, non worki ng

  4. "ionica accumulo Android", quindi "Carica ionica" -> oppure manualy mettere l'apk su un dispositivo

[BUG] - l'allarme non viene visualizzata e viene eseguita vista cronologia di navigazione. È come se questa azione che provo a registrare non venga presa in considerazione.

Cosa sto sbagliando? Ho provato questo codice anche in un controller, anche e.stopPropagation() o e.stopImmediatePropagation non ha ancora successo.

Ho gli ultimi Ionic (1.4.5) e Cordova 4.3.0, testati su alcuni dispositivi Samsung. In Ripple funziona bene.

+1

Prova ad ascoltare per questo evento utilizzando document.addEventListener ('BackButton', function() {alert ('BackButton rilevato')}, false); – JimTheDev

+1

Potrebbe non funzionare ma questo è l'evento in cui Ionic sta eseguendo il wrapping, quindi dovrebbe essere licenziato. – JimTheDev

+0

Se uso document.addEventListener ('backbutton', ......) funziona, ma non ho accesso ai servizi ionici in quel callback per controllare il nome dello stato corrente, controllare la cronologia, per aggiungere un condizione per eseguire un back nella storia o ionic.Platform.exitApp() a seconda dello stato. – gmodrogan

risposta

0

È possibile utilizzare il codice 999? Ecco che informazioni circa 100, 200, 300, 400, 500, ma non 900. http://ionicframework.com/docs/api/service/ $ ionicPlatform/

io uso il codice, ad esempio 501 e questo funziona.

Questo è ad esempio dal mio progetto che funziona

$scope.$on("$ionicView.enter", function() { 
      $ionicPlatform.registerBackButtonAction(registerBackButtonAction, 501); 
     }); 

    function registerBackButtonAction(e) { 

      if (!!e && typeof e.preventDefault === 'function') { 
       e.preventDefault(); 
      } 

      // some code 

      return false; 
     } 
3

provare prevenire il default prima

$ionicPlatform.registerBackButtonAction(function (event) { 
    event.preventDefault(); 
    alert("back button action handler"); 
}, 999); 

anche il codice 999 è perfettamente valido, i codici 100, 200, 300, 400, 500 sono solo le priorità che lo ionico assegna ad alcune azioni del pulsante back. Ho usato più volte la priorità 900, semplicemente mette il tuo backbutton sopra tutte le altre azioni.

Maggiori informazioni nella documentazione: http://ionicframework.com/docs/api/service/ $ ionicPlatform/

+0

Grazie !!! Mi hai salvato la vita! –

Problemi correlati