2016-06-16 1 views
0

다른 sapui5 앱을 구성 요소로 포함하는 샘플 sapui5 앱을 개발 중입니다. 이미 컴포넌트를로드하고 루트 뷰 컨텐츠를 표시 할 수 있었지만 라우팅에 문제가 있습니다. 메인 어플리케이션과 네스트 어플리케이션의 라우터는 별개로 작동하지만, 간단히 협조 할 수는 없습니다.
주요 응용 프로그램에 정의 된 manifest.json의 라우팅을 포함 임베디드 응용 프로그램에 대해 정의 manifest.json에서내장 된 구성 요소 내부를 라우팅하는 방법은 무엇입니까?

"config":{ 
      "routerClass":"sap.m.routing.Router", 
      "viewType":"XML", 
      "viewPath":"sample.main.view.detailPages", 
      "controlId":"app", 
      "controlAggregation":"detailPages", 
      "clearTarget":false, 
      "transition":"slide", 
      "bypassed":{ 
       "target":["home","menu"] 
      }    
     }, 
"routes":[ 
    { 
     "pattern":"", 
     "name":"appHome", 
     "target":["home","menu"] 
    }, 
    { 
     "pattern":"ExternalApp", 
     "name":"externalApp", 
     "target":["externalApp","menu"] 
    }], 
"targets":{ 
    "home":{ 
     "viewName":"Home", 
     "viewLevel":1 
    }, 
    "menu":{ 
     "viewPath":"sample.main.view.masterPages", 
     "viewName":"menu", 
     "viewLevel":1, 
     "controlAggregation":"masterPages" 
    }, 
    "externalApp":{ 
     "viewName":"ExternalApp", 
     "viewLevel":2 
    } 
} 

라우팅 포함

 "config":{ 
      "routerClass":"sap.m.routing.Router", 
      "viewType":"XML", 
      "viewPath":"some.sample.view", 
      "controlId":"EmbeddedApp", 
      "controlAggregation":"pages", 
      "clearTarget":false, 
      "transition":"slide", 
      "bypassed":{ 
       "target":"home" 
      } 
     }, 
     "routes":[ 
      { 
       "name": "home", 
       "pattern" : "", 
       "target": "home" 
      }, 
      { 
       "name":"toPage2", 
       "pattern":"page2", 
       "target":"next" 
      } 
     ], 
     "targets":{ 
      "home":{ 
       "viewName": "App", 
       "viewLevel":1 
      }, 
      "next":{ 
       "viewName": "Page2", 
       "viewLevel":2 
      } 
     } 

내가보기의 emedded 응용 프로그램 exsits에 주요 애플 리케이션을 탐색 , 나는 올바르게 루트보기 (URL은 #/ExternalApp)를 참조하십시오. navTo("toPage2")으로 임베디드 앱을 탐색 할 때 콘솔에 오류가 표시되지 않으므로 (라우터가 올바르게 구현 됨) URL 해시가 #/ExternalApp/page2 인 대신 간단히 #/page2이됩니다. 이로 인해 주 앱에서 패턴을 인식 할 수없고 바이 패스가 발생합니다.

질문은 - 구성 요소로 포함 된 앱 내부에서 라우팅을 수행하는 올바른 방법은 무엇입니까? 주 앱 manifest.json에 몇 가지 변경 사항이 있어야하거나 일부 추가 매개 변수가 구성 요소로 전달되어야한다고 가정하지만 유용한 정보를 찾을 수 없습니다.

EDIT1 : 나는 지금까지 무엇을 발견
- Route 객체 내가 컨테이너의 객체 경로를 선언 할 수 parent이라는 속성을 가지고 있습니다. 이 속성이 채워지면 외부 앱의 경로 패턴에 자동으로 적절한 상위 경로가 접두어로 붙습니다. 최선의 해결책이 아님 (외부 앱은 여전히 ​​컨테이너 앱에 대해 정보가 필요함), 적어도 변경 사항이 발생하면 수동으로 패턴을 다시 작성하지 않아도됩니다. 컨테이너 응용 프로그램에서

:

"externalApp":{ 
    "viewName":"ExternalApp/:appspecific:", 
    "viewLevel":2 
} 

그리고 외부 응용 프로그램에서 : 당신은 두 라우터 기능 얻고 싶은 경우에

답변

0

, 당신은 라우팅 패턴, 예를 조화 것

"next":{ 
    "viewName": "ExternalApp/Page2", 
    "viewLevel":2 
} 
+0

당신의 솔루션은 잘 돌아갈 것입니다.하지만 외부 앱에 하드 코딩 된 접두사를 만들 수는 없습니다. – Ajolos

+0

어떻게 그렇게? Fiori 앱을 확장하는 것은 매우 쉽습니다. 작동하지 않을 경우 마스터 앱을 변경하고 Fiori Launchpad와 유사한 기능을 수행 할 수 있는지 확인해야 할 수 있습니다. 런치 패드에서 라우팅 및 컴포넌트 화 개념을 연구하여 내 응용 프로그램에서 활용할 수있는 출발점이 될 것입니다. 힘든 쿠키처럼 들리니, 행운을 빈다. – jpenninkhof

관련 문제