私の AngularJs と phonegap/cordova アプリケーションでは、戻るボタンのイベントをリッスンします。次に、これをapp.js内の特定のコントローラーにブロードキャストします。
document.addEventListener("deviceready", function(){
document.addEventListener('backbutton', function(){
$rootScope.$broadcast('backButton');
}, false);
}, false);
特定のビューでは、これを聞いて、アプリを終了することをユーザーに通知し、続行するかどうかを選択できるようにしたいと考えています。
つまり、ロビーとゲームの 2 つのコントロールがあります。
ユーザーがロビーでクリックして戻ると、アプリを終了することを知らせる通知が表示されます。
$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
);
OK をクリックすると、アプリからログアウトされ、ログイン画面にリダイレクトされます。
ゲーム ビューにいる場合、ゲームを終了してからロビーにリダイレクトされることを通知する必要があります。
$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
);
});
私が見ている問題は、ゲーム中に戻るボタンをクリックすると両方の通知が表示されることです。1 つは正しいゲーム用ですが、必要のないロビー用の追加の 1 つです。
したがって、これは実際には欠陥ではありません。これがどのように機能するかですが、Angular に比較的慣れていないため、ここではブロードキャストが不適切であるように思われるため、最善のアプローチがわかりません。