2015-05-27 27 views
6

Oto kroki, aby odtworzyć:Ionic registerBackButtonAction nie działa

  1. utworzyć podstawowy projekt jonową "jonowy testowym start sidemenu"
  2. Dodaj platformie Android "jonowy platforma dodać android"
  3. W app.js dodać kod:

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

    Ten kod może być dodawany w sposobie .run lub w $ ionicPlatform.ready() metody - sam rezultat, nie worki ng

  4. "jonowy budować android", a następnie "jonowy Upload" -> lub recznie umieścić apk na urządzeniu

[BUG] - alert nie jest pokazana i widok historia nawigacji jest wykonywana. To jest tak, że akcja, którą staram się zarejestrować, nie jest brana pod uwagę.

Co robię źle? Próbowałem ten kod również w kontrolerze, również e.stopPropagation() lub e.stopImmediatePropagation nadal nie powiodło się.

Mam najnowsze wersje Ionic (1.4.5) i Cordova 4.3.0, testowane na niektórych urządzeniach Samsung. W Ripple działa dobrze.

+1

Spróbuj słuchać tego wydarzenia za pomocą document.addEventListener ('BackButton', function() {alert ('wykryty BackButton')}, false); – JimTheDev

+1

To może nie zadziałać, ale jest to zdarzenie, które owija Ionic, więc powinno zostać zwolnione. – JimTheDev

+0

Jeśli używam document.addEventListener ('backbutton', ......) to działa, ale nie mam dostępu do usług jonowych w tym wywołaniu zwrotnym, aby sprawdzić nazwę bieżącego stanu, sprawdzić historię, dodać warunek wykonania wstecz w historii lub ionic.Platform.exitApp() w zależności od stanu. – gmodrogan

Odpowiedz

0

Czy możesz użyć kodu 999? tutaj informacji o 100, 200, 300, 400, 500, ale nie 900. http://ionicframework.com/docs/api/service/ $ ionicPlatform/

mogę użyć kodu na przykład 501 i to działa.

To jest przykład z mojego projektu, który działa

$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

próby zapobiegania pierwszy domyślnego

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

Również kod 999 jest całkowicie poprawny, kody 100, 200, 300, 400, 500 są tylko priorytetami, które jonowe przypisują pewnym działaniom przycisku wstecz. Użyłem wielokrotnie priorytetu 900, po prostu umieszcza swój plecak na szczycie wszystkich innych akcji.

Więcej informacji w dokumentacji: http://ionicframework.com/docs/api/service/ $ ionicPlatform/

+0

Dzięki! Ratujesz moje życie! –

Powiązane problemy