मैं आयनिक 2 का उपयोग कर रहा हूं। मेरे पास एक दृश्य है कि उपयोगकर्ता को यह पुष्टि करने के लिए कहा जाना चाहिए कि वे नेविगेट करते समय छोड़ना चाहते हैं (उस समय एक वीडियो चल रहा है, और यह शायद एक आकस्मिक नेविगेशन है)।मैं कैसे आयोनिक में एक टैब परिवर्तन पर एक नव गार्ड उपयोग कर सकते हैं?
मैं जब उपयोगकर्ता, शीर्ष नेविगेशन, या वापस हार्डवेयर बटन (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();
}
लगता है आप की तरह वादा लौटना ही होगा। बजाय 'FALSE' की'; अनिवार्य रूप से 'लौट confirm.present()। –