다른 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
}
그리고 외부 응용 프로그램에서 : 당신은 두 라우터 기능 얻고 싶은 경우에
당신의 솔루션은 잘 돌아갈 것입니다.하지만 외부 앱에 하드 코딩 된 접두사를 만들 수는 없습니다. – Ajolos
어떻게 그렇게? Fiori 앱을 확장하는 것은 매우 쉽습니다. 작동하지 않을 경우 마스터 앱을 변경하고 Fiori Launchpad와 유사한 기능을 수행 할 수 있는지 확인해야 할 수 있습니다. 런치 패드에서 라우팅 및 컴포넌트 화 개념을 연구하여 내 응용 프로그램에서 활용할 수있는 출발점이 될 것입니다. 힘든 쿠키처럼 들리니, 행운을 빈다. – jpenninkhof