我在使用Ionic Framework / Angular JS在Phonegap项目中禁用Android后退按钮时遇到问题。我尝试了许多其他提议的解决方案无济于事。问题是我有一个“登录”屏幕,它是一个模态(ionicModal),但Android用户可以使用后退按钮导航,无论他们是否登录。
我尝试一起禁用Android Back按钮。事件触发,但页面导航仍然发生。我觉得如果这样有效,这将是理想和最直接的解决方案。但是,preventDefault()和stopPropagation()似乎没有效果。
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.addEventListener("backbutton", onBackKeyDown, false);
}
function onBackKeyDown(e) {
alert('back button triggered');
e.preventDefault();
e.stopPropagation();
}
我还尝试通过监听$ locationChangeStart并阻止它来禁用Angular中的导航:
// Disable "Back" button on androids if user is on login screen
$rootScope.$on('$locationChangeStart', function(e) {
if( true ) {
e.preventDefault();
e.stopPropagation();
}
});
这似乎也有效,但仍然不能阻止Android隐藏模态并转到上一个屏幕。
使用Phonegap / Ionic / Angular时是否有正确的方法来禁用Android Back按钮?它使用Angular UI路由器,模态不是路由,而是离子模型。
答案 0 :(得分:2)
似乎有一个名为"hardwareBackButtonClose"的布尔属性可以在模态上设置,以确定是否可以使用Android和类似设备上的硬件后退按钮关闭模态。默认为:true,因此请尝试将其设置为false。
答案 1 :(得分:0)
在开始挖掘GitHub中的离子代码后,我看到他们最近将此作为模式的选项添加。我只能应用此提交中突出显示的更改并使其正常工作:
https://github.com/driftyco/ionic/commit/61f879bb535997078f73b7faa424e43699e0b018
还为每次提交添加以下常量https://github.com/driftyco/ionic/commit/e9d8eba12b4de48617e9335e113c7c98173909b7
var PLATFORM_BACK_BUTTON_PRIORITY_MODAL = 200;