在部署到Sap Cloud Platform时,是否可以重用组件?

时间:2019-02-07 09:06:43

标签: sapui5 sap-web-ide sap-cloud-platform

我试图通过使用ComponentContainer来重用另一个应用程序,如本博客中所示:https://blogs.sap.com/2017/10/23/demystifying-the-art-of-component-reuse-in-sapui5/

我的应用程序正在通过SAP Web IDE Full-Stack开发,并已部署到SAP Cloud Platform。我已经看到了通过部署到ABAP信息库进行工作的示例,但这不是我们想要做的。

到目前为止,我已经创建了一个子应用程序和一个父应用程序,并且我试图使用ComponentContainer从父项调用该子应用程序。我已经部署了儿童应用程序,但不确定如何从父级引用此应用程序。

这是我的ParentApp视图:

<mvc:View controllerName="Parent.MyParentApp.controller.View1"
xmlns:html="http://www.w3.org/1999/xhtml" 
xmlns:mvc="sap.ui.core.mvc"
xmlns:core="sap.ui.core"
displayBlock="true" xmlns="sap.m">
<App id="idAppControl">
    <pages>
        <Page title="{i18n>title}">
            <content>
                <Text text="Hello"/>
                <core:ComponentContainer width="100%"
                    name="MyChildApp"
                    component="MyChildApp"/>
            </content>
        </Page>
    </pages>
</App>

ParentApp Component.js

jQuery.sap.registerModulePath("MyChildApp", "/mychildapp/");
        jQuery.sap.require("MyChildApp.Component");

ParentApp neo-app.json

{
    "path": "/mychildapp/",
    "target":{
        "type": "application",
        "name": "mychildapp"
    },
    "description": "My Child App"
}

这是我的ChildApp视图:

<mvc:View controllerName="Child.MyChildApp.controller.View1" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:mvc="sap.ui.core.mvc"
displayBlock="true" xmlns="sap.m">
<App id="idAppControl">
    <pages>
        <Page title="{i18n>title}">
            <content>
                <Text text="World"/>
            </content>
        </Page>
    </pages>
</App>

当前,我只是遇到错误:“未捕获(承诺)错误:无法从../../resources/myChildApp/model/models.js加载'myChildApp / model / models.js”:404- ”。

我假设问题与Component.js和neo-app.json中给出的路径有关,但是我不确定在云平台上工作时这些路径将是什么。

我对Ui5开发很陌生,所以不确定我尝试做的事情是否可能,但是对此的任何建议/帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

一定是因为错误的路径。为了找到正确的路径,您可以执行以下操作:

1)打开chrome DevTools并打开“网络”标签。

我的猜测是您的子应用程序的Component.js将被涂成红色,这意味着它没有被加载。 如果将鼠标悬停在 Parent 应用程序的Component.js文件上,您将能够看到父应用程序的存储路径。希望如果您将此路径调整为类似的路径,但是对于您的Child应用程序,您的重用将是可行的。

我的猜测是您的父应用程序组件的路径看起来像是'/sap/fiori/parentApp/Component.js'。

在这种情况下,请在父应用程序的组件中尝试以下操作:

jQuery.sap.registerModulePath("MyChildApp", "/sap/fiori/mychildapp");