SAP HANA Cloud Portal にウィジェットとしてデプロイできる単純な SAPUI5 アプリケーションを作成しました。このアプリケーションには、ネストされた 2 つの xml ビューをロードする 1 つのルート xml ビューが含まれており、内部に複雑なロジックはありません。
SAP HANA Cloud Portal では、このウィジェットを同じサイトの複数のページに追加すると、すべてがうまく表示されます。しかし、サイト ページ間を移動し始めると、ルート xml ビューはそのサブ ビュー html を失います。
アプリケーションには複雑なロジックが含まれていないのに、なぜルート ビューはそれらのサブ ビューを失うのでしょうか?
また、サイト ナビゲーションが発生した後にサブ ビュー コンテンツを維持するにはどうすればよいですか?
ルート ビューのコードは次のとおりです。
<mvc:View controllerName="ui5views.controller.RootApp" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:mvc="sap.ui.core.mvc" xmlns:core="sap.ui.core" xmlns="sap.m">
<mvc:XMLView id="renderView" viewName="ui5views.view.render" />
<mvc:XMLView id="editView" viewName="ui5views.view.edit" />
</mvc:View>
サブビューは次のとおりです。
edit.view.xml
<mvc:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" controllerName="ui5views.controller.render" xmlns:html="http://www.w3.org/1999/xhtml"> <VBox id="app" class="app-root-edit"> <html:div id="appEdit" class="app-edit">edit</html:div> </VBox>
render.view.xml
<mvc:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" controllerName="ui5views.controller.render" xmlns:html="http://www.w3.org/1999/xhtml"> <VBox id="app" class="app-root-view"> <html:div id="appViewer" class="app-viewer">render</html:div> </VBox>
Github で入手可能な完全なサンプル アプリケーション ソース: https://github.com/anasnakawa/ui5views
問題を再現するには、次の手順に従います。
- リポジトリを SAP Web IDEに複製する
- SAP HANA クラウド ポータルへのデプロイ
- SAP HCP でサイトを作成する
- 別のサイト ページを作成する
- 最初のページに ui5views を追加
- ウィジェットを調べて、サブビュー (
.app-viewer
または.app-edit
)を探します。 - 他のサイト ページに移動し、ui5views ウィジェットを追加します。
- 最初のページに戻る
予想された結果:
サブビューはルート ビュー内に残ります
実績:
サブビューはルート ビュー内にありません (document.querySelectorAll( '.app-viewer' )
ビューがページの別の場所に配置されていることが示されます)