PhoneGap Android后退按钮带有Ionic和Angular

时间:2014-08-05 21:12:32

标签: angularjs cordova angular-ui-router ionic-framework

我在使用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路由器,模态不是路由,而是离子模型。

2 个答案:

答案 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;