2016-11-21 58 views
0

我能夠使用以下代碼檢測設備(Android)後退按鈕單擊事件。但是,點擊後退按鈕後,它會打開一層返回並打開確認對話框。使用Ionic2/angular2設備(Android)後退按鈕單擊檢測

我如何避免使用ionic2這種行爲(轉到上一個屏幕)?

registerBackButtonListener() {    
     document.addEventListener('backbutton',() => {   
      let backBtnCnfirm = this.alertCtrl.create({ 
       message: 'Do you want to close the App?', 
       buttons: [ 
       { 
       text: 'Yes', 
       handler:() => { 
       this.platform.exitApp(); 
       } 
      }, 
      { 
      text: 'No', 
      handler:() => { 
      } 
      } 
     ] 
     }); 
     backBtnCnfirm.present(); 
     }, false); 
    } 
+0

你什麼時候調用'registerBackButtonListener()'? – Huiting

+0

我打電話給platform.ready()函數 – vishnu

+0

在一個名爲'ionViewWillLeave()'的方法中顯示你的警報,這將在你的頁面被「彈出」之前執行,讓我把它作爲一個答案 – Ivaro18

回答

0

後退按鈕將調用navCtrl.pop(),所以回到前一頁。離子提供生命週期事件,如viewDidEnter,viewWillEnter,viewWillLeave等

當你的代碼中創建這個功能:

ionViewWillLeave(){ 
    this.alertCtrl.create({ 
    message: 'Do you want to close the App?', 
       buttons: [ 
       { 
       text: 'Yes', 
       handler:() => { 
        this.platform.exitApp(); 
       } 
      }, 
      { 
       text: 'No', 
       role: 'cancel' 
      } 
      ] 
    }).present(); 
} 

離子將navCtrl.pop()之前執行這些功能被執行。

注:(推或手動彈出時左右),這將執行時頁面會離開,但我認爲你有足夠的智慧找到一種解決方法(布爾檢查FE)

(我不不知道你的要求,但我發現當按下按鈕時顯示這樣的消息是不好的UX,通常人們會想要返回一頁)