使用Ionic2 ionviewCanleave Navigation Guard的好处来响应警报以保持或离开页面



目前看不到使用此类导航guard的点,因为我们不知道要导航的目标页面(从navController getActive()方法中可以避免Active Page Info)。通常,我们会使用警报问:"您真的想离开此页面吗?"响应于选择的菜单选项,例如,据我所知,我们不知道将哪个页面" setRoot"作为目标页面,因为ionviewCanleave处理程序没有参数,例如Topage/EnteringPage。

是否有人设法这样做,或者从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;
  }

不是100%确定我理解这个问题...但是据我了解,您需要根据某种条件阻止用户导航到某些页面。例如,在编辑表格上,我有以下

  ionViewCanLeave() {
    // here we are checking if the dialog is being closed and there are unsaved changes
    if (!this.saved && this.form.dirty) {
      return new Promise((resolve: Function, reject: Function) => {
        this.dialogs.showConfirmDialog('You have unsaved changes. Do you want to close and discard your changes?', null, null, 'confirm-warning-dialog')
          .then((confirmed) => {
            if (confirmed) {
              resolve();
            } else {
              reject();
            }
          });
      });
    }
  }

这检查表格是否尚未保存,并且发生了任何更改,它显示了一个确认对话框。如果在此对话框取消中,则可以防止导航,否则允许导航。IonviewCanleave不会自行车自导航,而是在用户离开页面时作为处理程序。希望这有帮助

相关内容

  • 没有找到相关文章

最新更新