请参阅单独部署的组件以在ui5应用中重用

问题描述 投票:0回答:1

我正在开发一些应用程序,每个人都需要以相同的方式显示文档。为此,我创建了一个新组件,该组件在单独的组件中处理我的文档。然后,我只想从我的其他应用程序中重用此组件。

为了嵌入我的重用组件,我在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中的配置中,但到目前为止失败了。这是我所做的:

    我在sap.ui5节中添加了一个依赖项,并且在这样的依赖项项中:
  • "components": { "de.dvelop.base.DvelopBaseDocViewer": { "lazy": true } }
      我将以下条目添加到sap.ui5部分
  • "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

  • 组件,其中重用组件位于同一已部署项目中。 但是这不是我对可重用组件的理解。因此,更改该组件中的某些内容将使其有必要使用该组件将文件复制到所有应用程序项目中。而且它们都必须再次部署。因此,到目前为止,我对jquery.sap.registerModulePath进行了后备,因为它可以与部署的组件一起使用,以从其他独立组件中引用它们。还是有人知道如何在manifest.json中更好或更恰当地处理此问题?

    亲切的问候马赛厄斯

    sapui5
    1个回答
    0
    投票
    请参见此处:ui5重用组件:https://github.com/Yelcho/UI5-Comp-Routing

    您在这里混合了旧的和新的方法,要弄清此答案中的所有步骤将很长。这里简要介绍了方法:

      定义您的componentUsages
  • "componentUsages": { "myDoc": { "name": "com.company.myDoc", "settings": {}, "componentData": {}, "lazy": true }}
      在resourceRoots中定义路径映射
  • "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: { } } });
  • © www.soinside.com 2019 - 2024. All rights reserved.