我正在开发一些应用程序,每个人都需要以相同的方式显示文档。为此,我创建了一个新组件,该组件在单独的组件中处理我的文档。然后,我只想从我的其他应用程序中重用此组件。
为了嵌入我的重用组件,我在view.xml中使用了类似的内容:
<core:ComponentContainer
name="de.mycomp.base.DocViewer"
component="de.mycomp.base.DocViewer"
settings='\{"param1":"value1"\}'/>
要在运行时访问它,我必须声明重用组件的名称空间,并将其与资源URL关联。为此,我在Component.js的初始化方法中使用了以下代码,该方法使用了我的重用组件DocViewer。
jQuery.sap.registerModulePath("de.mycomp.base.DocViewer", "/sap/bc/ui5_ui5/sap/zdocviewer");
zdocviewer在这种情况下是在内部部署了重用组件的bsp应用程序的名称。为了在Webide和SAP-Cloud-Plattform上也能使用此功能,我需要向neo-app.json添加一个条目像这样:
{
"path": "/sap/bc/ui5_ui5/sap/zdocviewer",
"target": {
"type": "application",
"name": "docviewer"
},
"description": "my base document viewer"
},
其中docviewer是在SCP上具有重用组件的已部署应用程序的名称。类型[[application表示此目的地是一个应用程序。
到目前为止,此操作在前提条件和树液云中均有效。但是我的问题是
我不想在Component.js中使用registerModulePath。几乎所有组件配置都在manifest.json文件中进行。因此,我尝试将此编码行移至manifest.json中的配置中,但到目前为止失败了。这是我所做的:"components": {
"de.dvelop.base.DvelopBaseDocViewer": {
"lazy": true
}
}
"resourceRoots": {
"de.dvelop.base.DvelopBaseDocViewer": "/sap/bc/ui5_ui5/sap/zdocviewer"
},
这里的问题是,它不允许在资源根条目的value-part中使用绝对路径。因此无效:-/ sap / bc / ui5_ui5 / sap / zdocviewer-../sap/bc/ui5_ui5/sap/zdocviewer仅此有效:-sap / bc / ui5_ui5 / sap / zdocviewer-./sap/bc/ui5_ui5/sap/zdocviewer
因此,此注释仅可用于embedded
亲切的问候马赛厄斯
您在这里混合了旧的和新的方法,要弄清此答案中的所有步骤将很长。这里简要介绍了方法:
"componentUsages": {
"myDoc": {
"name": "com.company.myDoc",
"settings": {},
"componentData": {},
"lazy": true
}}
"resourceRoots": {
"com.company.myDoc": "/sap/bc/ui5_ui5/sap/zdocviewer"
},
"targets": {
"myDocTarget": {
"type": "Component",
"usage": "myDoc"
}
.getRouter()
.navTo("myDocRoute", {
id: oBindingContext.getProperty("CategoryID")
}, {
products: {
route: "list",
parameters: {
}
}
});