在我AngularJs和PhoneGap的/科爾多瓦應用程序,我聽後退按鈕事件。
document.addEventListener("deviceready", function(){
document.addEventListener('backbutton', function(){
$rootScope.$broadcast('backButton');
}, false);
}, false);
在某些觀點我想聽聽這個,這樣我可以告知,他們將退出應用程序的用戶,並給他們的選項:然後我就app.js內廣播這個特定的控制器繼續與否。
所以有兩個控件,大廳和遊戲。
當用戶單擊回到了大廳,他們應該看到一個通知,告訴他們,他們將退出應用程序:
$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
);
});
我看到的問題是,當我在比賽中我看到當我點擊後退按鈕時這兩個通知。一個是正確的遊戲,另一個是不需要的大廳。
所以這是不是一個真正的缺陷,這是應該如何工作,但作爲相對較新的角度,我不知道最好的方法的廣播似乎不妥這裏。
嗨,是我用$ location.path()方法按你的建議。 兩個控制器不需要同時加載。 – RyanP13
然後,您不應該要求執行任何檢查。這可能是內存泄漏問題。 – Chandermani
不知道發生了什麼,但我注意到板聽衆,檢查後按鈕事件偵聽器只被綁定一次,但仍然我重複通知。所以如果我退出應用程序一次,會有兩個通知,然後如果我再次退出,三個通知等。 這將指向事件監聽器被重新綁定,但它顯然不是! – RyanP13