相对于苹果来说android还有一些功能按钮,这里面就包括了返回键。在苹果中只要你设置好每一个返回的按钮跳转的地方就可以高枕无忧了,但是android不行,因为它还有恶心的物理或者虚拟返回按钮。很多时候就需要监控这些返回按钮来进行部分操作。比如在qq 微信等应用中当你在有tabs页面时点击返回是会关闭应用。
我们要想操作返回按钮就需要注册一个事件。首先我们在run方法中注入$ionicPlatform,然后开始注册返回事件,注册方法是
registerBackButtonAction(callback, priority, [actionId])
(这里需要注意的是,这里需要引入cordova.js文件才会生效,不然注册的事件不会有效果)
在ionic框架中已经注册了几个返回事件,分别是 view sideMenu modal actionSheet popup loading 他们的优先级分别是
现在我们首先来实现类似qq和微信的含有tabs的页面点击返回时退出应用,假设配置路由的时候在有tabs的页面中state的name都含有tab(注:代码中的$ionicPlatform和$ionicHistory都是需要注入)
$ionicPlatform.registerBackButtonAction(function(){
if($ionicHistory.currentView().stateName.indexOf('tab.')>-1){
ionic.Platform.exitApp();
}
else{
navigator.app.backHistory();
}
},101)
因为页面的返回时view 优先级是100 所以这里的优先级要高于100,我这里设置的是101。如果配合$state 还可以完成很多其他的东西 (关于路由可以去看ionic 中的路由玩法)
下图是路由的配置