我们用ionic打包的app在真机上需要处理手机硬键盘的返回键,下面提供几种方法:
$ionicPlatform.registerBackButtonAction(callback, priority, [actionId])
这个方法一般放在app.js文件下的run()中,controller中不起作用,实例如下:
1  | $ionicPlatform.ready(function() {  | 
| 参数 | 说明 | 
|---|---|
| callback | 回调方法 | 
| priority | 优先级:常用的优先级有:100=返回上一个页面;150=side menu;200=关闭modal;300=关闭action sheet;400=关闭popup;500=关闭loading overlay;大于哪个就会覆盖掉哪个默认行为 | 
| actionId | 唯一id(选填) | 
$ionicPlatform.onHardwareBackButton(callback)
这个方法可以写在controller中,但有个很严重的bug,实例如下:
1  | $ionicPlatform.ready(function() {  | 
取消注册的返回事件:$ionicPlatform.offHardwareBackButton(callback)
我将此方法写入controller,在按返回键的时候,发生了很奇怪的事:
- 第一次进入此页面按返回键:console打印了一遍
 - 第二次进入此页面按返回键:console打印了二遍
 - 第三次进入此页面按返回键:console打印了三遍
 
我分析的原因:虽然事件注册在这个controller里,但是此事件是全局的,每次进入此页面都会多注册一次
解决方案:代码如下:
1  | $ionicPlatform.offHardwareBackButton($scope.goBack);  | 
document.addEventListener(‘backbutton’,function,false)
这个方法也有那个严重bug,跟上面的onHardwareBackButton的bug一样.
因为:onHardwareBackButton的源码就是封装的document.addEventListener(‘backbutton’,function,false)


