2015-06-11 4 views
6
genannt

Ich versuche, die Menü-Taste auf Android (4.4.2 - Samsung S3) zu überwachen, aber die Ionic event (noch die zugrunde liegenden Cordova event) feuert nicht:Ionic/Cordova menubutton Ereignis nicht

$ionicPlatform.on("menubutton", function() { 
    // do our stuff here (never gets called) 
}); 

Hat konnte jemand diese Arbeit machen? Laufende Ionic-Plattform 1.0.0 und alle anderen Ereignisse werden wie erwartet ausgelöst.

+0

Könnten Sie auch einige Ihrer HTML-Code zur Verfügung stellen? – QueryLars

+0

@QueryLars - es gibt nicht relevanten HTML - auf menubutton -Ereignis, führen wir einige JS (oben mit dem Kommentar Block) –

+0

wissen Sie sicher, dass diese Bindung funktioniert? Kannst du den Block dort posten, wo du diese Bindung hast? Oder können Sie eine Log-Anweisung/Warnung einfügen, um sicherzustellen, dass Ihre Inline-Funktion gebunden ist? – Alp

Antwort

2

Versuchen Sie folgendes: im .run()

$ionicPlatform.ready(function() { 
//... 
    if (window.cordova) { 
     $cordovaSplashscreen.hide(); 
     document.addEventListener("menubutton", myApp.onHardwareMenuKeyDown, false); 
    } 
/... 

Dann in der Steuerung:

$scope.onHardwareMenuKeyDown = function() { 
    alert('menu button is working'); 
} 

Eine andere Möglichkeit, etwas zu tun:

angular.module('myApp', ['ngCordova', 'ionic', 'myApp.controllers']) 
    .run(function($ionicPlatform, $rootScope, $state, $localstorage,$ionicSideMenuDelegate) { 

    $ionicPlatform.ready(function() { 

     document.addEventListener("menubutton", onMenuKeyDown, false); 

     function onMenuKeyDown() { 
      console.log("some menu pops pup!! "); 
      // here change the view , etc... 
      $rootScope.$apply(); 
     } 

    }); 

}) 
+1

Ich habe diesen Code in meinem '.run()' Code versucht, aber die Funktion wird niemals ausgelöst: 'document.addEventListener (" menubutton ", function() {console.log (" Menütaste);}, false); ' –