5
我正在使用Ionic 2.我有一個觀點,應該提示用戶確認他們想要在離開時離開(當時正在播放視頻,這可能是意外導航)。如何在Ionic的選項卡上更改導航警衛?
我有,當用戶點擊在頂部導航,或回硬件按鈕(的Android)後退按鈕時,使用下面的代碼爲這個工作的罰款:
// About to leave
ionViewCanLeave() {
this.api.getDefaultMedia().pause();
return new Promise((resolve, reject) => {
if(!this.allowedToLeave) {
let confirm = this.alertCtrl.create({
title: 'Are you sure?',
message: 'If you leave a class you will need to start over. Are you sure you want to leave? If you need a break you can pause by tapping the video.',
buttons: [{
text: 'OK',
handler:() => {
this.allowedToLeave = true;
resolve();
},
}, {
text: 'Cancel',
handler:() => {
reject();
}
}],
});
confirm.present();
}
});
}
視圖坐落在一個標籤。點擊不同的標籤不會調用此功能,所以用戶不會被提示,並且標籤只是切換。
如何在選項卡上顯示此提示更改?此視圖不是根標籤頁。
-
我一直在使用ionViewWillLeave()
嘗試,這是稱爲在標籤的變更,但不允許的方式來阻止用戶切換。下面的代碼確實顯示提示,但該選項卡之後發生了變化:
// Called when user exits page via tab
ionViewWillLeave() {
this.api.getDefaultMedia().pause();
if(!this.allowedToLeave) {
let confirm = this.alertCtrl.create({
title: 'Are you sure?',
message: 'If you leave a class you will need to start over. Are you sure you want to leave? If you need a break you can pause by tapping the video.',
buttons: [{
text: 'OK',
handler:() => {
this.allowedToLeave = true;
this.leave();
},
}, {
text: 'Cancel',
handler:() => {
// Do nothing
}
}],
});
confirm.present();
return false;
}
}
// Leave the view
leave() {
this.navCtrl.pop();
}
似乎你需要回報這個承諾。基本上'返回confirm.present();'而不是'false'。 –