angularjs – 离子android后退按钮sidemenu是打开检测 – 不能可
我有一个奇怪的情况.我正在写一个带有左滑动菜单的角度离子应用程序,这就是我想要做的:
1)陷阱Android后退按钮 为了捕获后退按钮,我在app.run中有这个代码(也尝试重新定位到基本控制器并将其与$controller注入其他控制器,没有什么区别) 我注意到的是,如果我实际点击菜单的“菜单图标”,“isOpen”会在我打开和关闭菜单时可靠地打印真/假 但是,当我点击Android后退按钮时,它第一次工作(打印为true或false),但每次后续点击都不会改变isOpen状态,而菜单实际上会切换. 因此,我无法以编程方式检测菜单是否在android后退按钮处理程序中打开或关闭. 令我困惑的是为什么这只是android后台处理程序中的一个问题,而且当我点击菜单项时没有问题.它是在两种情况下调用的相同代码,即 $ionicSideMenuDelegate.toggleLeft(); 我的Android处理程序代码: $ionicPlatform.registerBackButtonAction(function (event) { $ionicSideMenuDelegate.toggleLeft(); $ionicSideMenuDelegate.$getByHandle('sideMenu').toggleLeft(); $timeout ( function() { console.log ("Status of SIDE MENU IS : " + $ionicSideMenuDelegate.$getByHandle('sideMenu').isOpen()); },1000); },100); 我也设置了一个codepen,虽然不确定如何测试它和android设备,因为每次我尝试在codepen或jsfiddle上点击后退按钮时,它会让浏览器返回页面. 对正在发生的事情的任何见解?我已经在离子论坛上问了,但是还没找到原因(还) – >因此,它希望它能够覆盖更广泛的受众. 解决方法
registerBackButtonAction需要一个
priority来覆盖其他动作:
我已经测试了这段代码,它按预期工作: .run(function($ionicPlatform,$ionicSideMenuDelegate,$ionicPopup) { $ionicPlatform.registerBackButtonAction(function(e) { e.preventDefault(); if (!$ionicSideMenuDelegate.isOpenLeft()) { $ionicSideMenuDelegate.toggleLeft(); } else { navigator.app.exitApp(); } },1000); }); 正如您所看到的,我使用了优先级1000来确保我覆盖所有默认操作. 我也使用了preventDefault().我不认为你需要这个,但为了以防万一. 这段代码仅适用于左侧菜单,因为我只检查: $ionicSideMenuDelegate.isOpenLeft() 并且只打开左边的一个: $ionicSideMenuDelegate.toggleLeft() 但您也可以将其更改为与right菜单一起使用. 更新: 如果有人有兴趣了解有关Android和Back Button的更多信息,那么这是迄今为止我读过的最好的article. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |