Ionic / Cordova menubutton事件未被召集

时间:2015-06-11 20:06:05

标签: cordova ionic-framework android-menu

我正在尝试监控Android上的菜单按钮(4.4.2 - Samsung S3),但Ionic event(也不是基础的Cordova event)未触发:

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

有没有人能够做到这一点?运行Ionic平台1.0.0,所有其他事件都按预期启动。

2 个答案:

答案 0 :(得分:3)

文档缺少一行。

document.addEventListener("deviceready", function() {
    ...
    navigator.app.overrideButton("menubutton", true);  // <-- Add this line
    document.addEventListener("menubutton", yourCallbackFunction, false);
    ...
}, false);

https://issues.apache.org/jira/browse/CB-9949#comment-14989073

答案 1 :(得分:2)

试试这个: 在.run()

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

然后在控制器中:

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

另一种做事方式:

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();
        }

  });

})