如何在 UI5 父应用程序中加载子组件,而不在 manifest.json 中定义它们?

问题描述

如何在 UI5 父应用程序中加载子组件?。 我正在尝试实现一个 Fiori Launchpad,它可以将其他应用作为子组件加载。

到目前为止,我一直指的是 https://stackoverflow.com/a/46358895/5846045

但是实现这一点需要在清单中明确定义子组件。 谢谢!

解决方法

要将一个组件嵌入到另一个组件中,您需要使用 ComponentContainer - 如果您的应用“先验”不了解子组件,您可以将其与 URL 和其他属性一起使用。例如,如果您的“父”应用在运行时从数据服务获取有关子应用的信息。

https://sapui5.hana.ondemand.com/#/api/sap.ui.core.ComponentContainer

您可以以任何可以使用其他控件的方式使用 ComponentContainer。您可以在 XML 视图中使用它或在控制器中实例化它,然后将其添加到页面的内容中(仅作为示例)

PS:只要确保子组件的 URL 来自同一主机。或者,如果它来自不同的主机,它允许使用 ajax 请求(跨域策略和东西)进行检索

更新 2021-01-04: 这是 JS Fiddle 中的一个简单粗暴的例子:

https://jsfiddle.net/iPirat/t30sr8zw/

我在此处嵌入了 sapui5.hana.ondemand.com 中的 Button-Sample-Component。 由于 CORS 政策,它只会在您在浏览器中禁用网络安全example how to do so in chrome

This is how it looks like

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...