我创建了一个简单的 SAPUI5 应用程序,它可以作为小部件部署到 SAP HANA Cloud Portal。此应用程序包含一个根 xml 视图,它加载两个嵌套的 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>
子视图是:
编辑.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>
渲染视图.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' )
将显示视图放置在页面上的其他位置)