2017-04-06 1 views
1

2 개의보기가 있습니다. master1에는 항목 목록이 표시되고 한 항목을 클릭하면 master2로 이동합니다. 컨트롤러 master1.js의 코드는 다음과 같습니다 onRouteMatched에서 master2.js에서SAPUI5 탐색 및 반환

   onSelect : function(oEvent) { 
         this.getRouter().navTo("master2", { 
           from : "master1", 
           zlonr : oLoadingOrder.LoNumber 
           }); 
       }, 

나는이 코드를 가지고 :

  onRouteMatched : function(oEvent) { 
         var that = this; 
         var oParameters = oEvent.getParameters(); 

         if (oParameters.name === "master2") { 
           var oView = this.getView(); 
           var oDialog = oView.byId("dialogBaseInfo"); 

           if (!oDialog) { 

           oDialog = sap.ui.xmlfragment(oView.getId(),"ZABC.view.fragment.BaseInfo",this); 
           oView.addDependent(oDialog); 
                } 
              this.setCurrentDateTime(); 
              oDialog.open(); 

을},

그래서 나는 단순히 대화를 개방하고 . 대화 상자가 열리는 것을 볼 수 있지만 즉시 닫히지 만 master2 화면으로 이동합니다. 디버거에 오류가 없습니다. 내 경로는 다음과 같습니다

    pattern: "master1", 
        name: "master1", 
        view: "Master1", 
    //    viewLevel: 1, 
        targetAggregation: "pages", 
        clearControlAggregation: true, 
        targetControl: "masterAppId", 
        subroutes: [ 
        { 
         pattern: "zlonr/{zlonr}", 
         name: "master2", 
         view: "Master2", 
     //    viewLevel: 1, 
         targetAggregation: "pages", 

이런 일이 발생하는 이유 어떤 아이디어? 대화 상자는 계속 열어두고 계속 진행해야합니다. 탐색이 발생하면

답변

0

하지만 다시 바로

기본적으로 종료는 라우터에 의해 생성 된 target handler은 자동으로 모든 대화 인스턴스를 닫습니다. 대상 처리기는 setCloseDialogs을 사용하여이 동작을 변경하는 방법을 제공합니다. "MASTER2"에 이동하기 전에, 다음 줄을 추가하려고 :

다른 예기치 않은 동작이 들어
this.getRouter().getTargetHandler().setCloseDialogs(false); 

, 같은 subroutes으로 사용되지 않는 속성을 사용하지 않도록하려고합니다. 대신 targets.yourTargetName.parent을 사용하십시오. parent의 사용 방법은 this tutorial step을 참조하십시오. 또한 도 사용중인 sap.ui.ux3.Shell이없는 경우 clearControlAggregation을 사용하지 마십시오.

+0

안녕하세요, 귀하의 의견을 보내 주셔서 감사합니다. 그것은 오른쪽 소리,하지만 여전히 대화 상자를 닫습니다. master2로 이동하기 전에 이것을 넣으려고했지만 master2의 init에 넣으려고했지만 여전히 대화 상자를 닫습니다. – Tim

+0

@Tim : 알겠습니다. 문제를 재현 할 수있는 코드 또는 최소한의 예제를 게시 할 수 있다면 좋을 것입니다. 그렇지 않으면 호출 스택을 통해 디버그하여 어느 모듈에서 어떤 메서드 호출이 대화 상자를 파괴 (또는 닫는 지)를 알아낼 수 있습니다. – boghyon

+1

다시 도움을 주셔서 감사합니다. 네비게이션 직후 대화 상자를 호출하지 않고 설정을 조금 변경했습니다. 이 문제를 해결할 다른 방법을 찾지 못했습니다. 어쨌든 도와 주셔서 감사합니다! – Tim