SAP UI5重用组件

时间:2017-10-20 14:51:14

标签: javascript include components sapui5

我正在编写一个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 个答案:

答案 0 :(得分:0)

另一位基督徒在这里......: - )

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

  1. 您的不露面组件的ID
  2. SAP ABAP存储库中的匿名组件的名称
  3. 应用的依赖项部分是放置要加载的组件的正确位置。

    因此,您的无面组件正在铺设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