2017-02-17 7 views
1

탐색 할 대상 페이지를 알 수 없기 때문에 현재 해당 시점을 볼 수 없습니다 (활성 페이지 정보는 avaible입니다). navController getActive() 메소드에서). 일반적으로 우리는 "이 페이지를 정말로 떠나시겠습니까?"라는 질문에 대한 경고를 사용합니다. ionViewCanLeave 핸들러에는 toPage/enteringPage와 같은 매개 변수가 없기 때문에 예를 들어 메뉴 옵션을 선택하고 OK를 누르면 알 수있는 한 "setRoot"를 대상 페이지로 알 수 없습니다.ionic2 ionViewCan을 사용하면 다음과 같은 이점이 있습니다. 이동 경고 메시지에 응답하기 위해 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; 
 
    }

답변

6

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는 자신을 탐색하지 않지만 사용자가 페이지를 떠날 때 핸들러로 작동합니다. 이게 도움이 되었으면 좋겠다.

+1

약속과 더불어 아마 나는 행운이있다. 설명대로 약속을 사용하도록 코드를 전환하고 다시 연락을 드리겠습니다. 팁 주셔서 감사합니다 :-) –

+1

나는 약속을 사용하여 일하고 있어요. 당신의 예제는 이온 문서에 유용 할 것입니다. :-) –

+0

이 답변은 동의 할만 큼 이오닉 문서에 도움이 될 것입니다! 감사. – LeeGee