SAP UI5重用组件



我正在编写一个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()函数是否正确?我还需要传递一些参数来正确地初始化它。最终,组件及其数据应该在应用程序范围内可用。

谢谢你,

基督教

这里的另一位基督徒…:-)

关于你的问题,你需要记住两件事:

  1. 你的无脸组件的id
  2. SAP ABAP存储库中的匿名组件的名称

应用程序的依赖项部分是放置要加载的组件的正确位置。

因此,您的匿名组件位于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起,加载重用组件的建议发生了更改。请参阅sdk文档中的相应文章。

最新更新