2017-10-20 140 views
0

我正在编写一个应该在多个其他应用程序中使用的UI5匿名组件。目标应用程序位于SAPUI5 ABAP存储库的包中。应包含在目标中的组件位于同一SAPUI5 ABAP存储库中的不同包中。SAP UI5重用组件

如何包含此组件?我从文档中以如下方式添加了对目标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

另一个基督教在这里... :-)

关于你的问题,你需要保持两两件事:

  1. 的ID你的匿名组件
  2. SAP ABAP知识库中的无脸组件的名称

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

因此,无面向组件所在的SAP ABAP存储库的哪个包并不重要。重要的是身份证。

让我们看看到你露脸组件的清单:

{ 
    "_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