2017-10-20 112 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