我试图通过使用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开发很陌生,所以不确定我尝试做的事情是否可能,但是对此的任何建议/帮助将不胜感激。
谢谢
答案 0 :(得分:0)
一定是因为错误的路径。为了找到正确的路径,您可以执行以下操作:
1)打开chrome DevTools并打开“网络”标签。
我的猜测是您的子应用程序的Component.js将被涂成红色,这意味着它没有被加载。 如果将鼠标悬停在 Parent 应用程序的Component.js文件上,您将能够看到父应用程序的存储路径。希望如果您将此路径调整为类似的路径,但是对于您的Child应用程序,您的重用将是可行的。
我的猜测是您的父应用程序组件的路径看起来像是'/sap/fiori/parentApp/Component.js'。
在这种情况下,请在父应用程序的组件中尝试以下操作:
jQuery.sap.registerModulePath("MyChildApp", "/sap/fiori/mychildapp");