我正在编写一个UI5无面组件,应该在其他多个应用程序中使用。目标应用程序位于SAPUI5 ABAP存储库的包中。应包含在目标中的组件位于同一SAPUI5 ABAP存储库中的不同包中。
如何添加此组件?从文档中,我按以下方式将更改添加到目标manifest.json:
"dependencies": {
"minUI5Version": "1.30.0",
"libs": { "sap.m": {}, "sap.ui.core": {}, "sap.ui.layout": {} },
"components": { "cls.dva": {} }
},
但该组件实际上是如何找到的?这里我使用了SICF节点路径。我是否必须在路径中添加“.Component”?还有另一个地方我必须在目标应用程序中引用依赖组件吗?
另一个问题是我如何以及在何处实例化该组件?目标Component.js的init()函数是正确的位置吗?还有一些参数我必须通过才能正确地将其初始化。最后,组件及其数据应该适用于各种应用程序。
谢谢,
基督教
答案 0 :(得分:0)
另一位基督徒在这里......: - )
关于你的问题,你需要牢记两件事:
应用的依赖项部分是放置要加载的组件的正确位置。
因此,您的无面组件正在铺设SAP ABAP存储库的哪个包并不重要。重要的是id。
让我们来看看你的不露面组件的清单:
{
"_version": "1.4.0",
"sap.app": {
"id": "cls.dva",
"type": "component",
"i18n": "i18n/i18n.properties",
"applicationVersion": {
"version": "1.0.0"
},
"resources": "resources.json",
...
},
"sap.ui": {
...
}
...
}
正如您所看到的,此组件的ID等于您在应用程序的依赖项部分中输入的ID,该部分将使用您的组件。这就是你需要照顾的全部。
现在,如果你想在Component.js的init函数中加载和访问你的依赖组件(如果它应该在整个应用程序中可用,这是一个好地方),你可以执行以下操作(这里你需要您在第一次部署期间为其提供的重用组件的名称,例如 z_cls_dva ):
init: function() {
sap.ui.component({
manifestUrl: "/sap/bc/ui5_ui5/sap/z_cls_dva/manifest.json",
async: true,
manifestFirst: true,
componentData: { componentSetting: true }
}).then(function(oComponent) {
this._clsDvaReuse = oComponent
}.bind(this)).catch(function(sError) {
jQuery.sap.log.error(sError, "-", this.getManifestEntry("sap.app").id)
}.bind(this))
}
通过 componentData ,您可以为重用组件提供参数。在那里,您可以致电this.getComponentData()
来访问它们。您还可以使用设置属性为组件提供配置。有关详细信息,请阅读sap.ui.component文档。
注意:自SAPUI5 1.48起,加载重用组件的建议发生了变化。请参阅the corresponding article in the sdk documentation。