Невозможно увидеть, что в настоящее время использовать такую навигационную панель, потому что мы не знаем о целевой странице для навигации (активна информация о странице доступна из метода navActive() navController). Обычно мы будем использовать оповещение, чтобы задать вопрос «Вы действительно хотите покинуть эту страницу?» в ответ на выбранную опцию меню, например, и на OK, насколько я могу судить, мы не знаем, на какой странице «setRoot» ссылается на целевую страницу, потому что обработчик ionViewCanLeave не имеет таких параметров, как toPage/enterPage.Преимущества использования ionic2 ionViewCanLeave Navigationguard для ответа на предупреждение, чтобы остаться или оставить страницу
Неужели кому-нибудь удалось это сделать, или, скорее, узнать из объектов навигации в информации о целевой странице ionic2?
Вот немного кода, чтобы установить контекст:
ionViewCanLeave(): boolean { // no parameters on offer :-(
let result: boolean = false;
let alert: Alert = this._alertCtrl.create({
title: 'Are you sure you want to leave..?',
message: 'Your changes will be lost if you do?',
buttons: [
{
text: 'Cancel',
role: 'cancel',
handler:() => {
let dismiss: boolean = true;
return dismiss;
}
},
{
text: 'OK',
handler:() => {
let dismiss: boolean = false;
let alertPop = alert.dismiss();
alertPop
.then(() => {
let rootNav: NavController = this._appCtrl.getRootNav();
this._navCtrl.pop();
this._navCtrl.setRoot(DashboardPage); // Here we want to parameterize to target page - hardcoded for now
});
return dismiss;
}
}
]
});
if (this._applicationService.getOfferStatus() === OfferStatus.live) {
alert.present();
}
return result;
}
Хорошо с обещанием, может быть, мне повезло больше. Я переключу свой код на использование обещаний, как описано, и вернитесь к вам. Спасибо за подсказку :-) –
Я получил это, используя обещания .. ваш пример был бы полезен в ионных документах :-) –
Согласитесь, этот ответ принесет огромную пользу Ионным документам! Благодарю. – LeeGee