在我的 AngularJs 和 phonegap/cordova 应用程序中,我监听后退按钮事件。然后我将它广播到我的app.js中的某些控制器:
document.addEventListener("deviceready", function(){
document.addEventListener('backbutton', function(){
$rootScope.$broadcast('backButton');
}, false);
}, false);
在某些视图中,我想听听这个,以便我可以通知用户他们将退出应用程序并让他们选择继续或不继续。
所以有两个控件,大厅和游戏。
当用户在大厅中点击返回时,他们应该会看到一条通知,告诉他们他们将退出应用程序:
$rootScope.$on('backButton', function(event){
$window.navigator.notification.confirm(
'Are you sure you want to exit app?', // message
$scope.exitApp, // callback to invoke
'APP', // title
['OK', 'Cancel'] // button labels
);
如果他们点击确定,他们将从应用程序中注销并重新定向到登录屏幕。
当他们在游戏视图中时,他们应该被告知他们将退出游戏,然后重定向到大厅:
$rootScope.$on('backButton', function(event){
$window.navigator.notification.confirm(
'Are you sure you want to quit your game?', // message
$scope.quitGame, // callback to invoke
'GAME', // title
['OK', 'Cancel'] // button labels
);
});
我看到的问题是,当我在游戏中时,当我单击返回按钮时,我会看到两个通知。一个用于正确的游戏,然后另一个用于不需要的大厅。
所以这并不是一个真正的缺陷,它应该是这样工作的,但是对于 Angular 来说相对较新,我不确定最好的方法,因为在这里广播似乎不合适。