如何在 Cloud Foundry 的 Fiori launchpad 中使用自定义控件
How to use custom control in Fiori launchpad of Cloud Foundry
当我在 Cloud Foundry 的 Fiori 启动板中将 Monitor 应用程序部署为 SAPUI5 应用程序时,遇到错误:
404 Not Found:
https://sapui5.hana.ondemand.com/resources/sap/ui/iot/controls/IoTChart.js
我在 FLP 中的配置:
/xs-app.json:
{
"source": "^/resources/sap/ui/iot/(.*)$",
"destination": "IOTAS_CONTROLS",
"target": "/sap/ui/iot/"
}
/mtad.yaml
modules:
requires:
- name: IOTAS_CONTROLS
group: destinations
properties:
forwardAuthToken: true
strictSSL: false
name: IOTAS_CONTROLS
url: ~{url}
resources:
- name: IOTAS_CONTROLS
properties:
url: https://sapuiiot-sb.cfapps.sap.hana.ondemand.com
/Main.view.xml
<mvc:View
controllerName="monitor.controller.Main"
xmlns:iot="sap.ui.iot.controls"
xmlns:iotele="sap.ui.iot.elements"
xmlns:action="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1"
displayBlock="false">
<iot:IoTChart noOfHours="1" headerTitle="Temperature & Gas Volume" subheaderTitle="Unit: Degree & M3"/>
我尝试读取“https://xxx-flp-sandbox.cfapps.sap.hana.ondemand.com/resources/sap/ui/iot/controls/IoTChart.js" in Controller.js
, it is redirected to "https://sapuiiot-sb.cfapps.sap.hana.ondemand.com/sap/ui/iot/controls/IoTChart.js”成功,证明xs-app.json
中的路由有效。
所以我的问题是,如果在 XML 视图中需要 sap.ui.iot.controls
,它总是会调用域:https://sapui5.hana.ondemand.com
而没有在 xs-[=55= 中传递路由].
这个项目在webIDE中运行成功,因为在neo-app.json
中,它定义了一个路由,重定向所有/resource/
,请求总是在webIDE主机中,但是在cloud foundry中, 它在 sapui5.hana.ondemand
host
有什么建议吗?
尝试过:
jQuery.sap.registerResourcePath("iotChart", "../../../../resources/sap/ui/iot/library")
jQuery.sap.require("iotChart")
//Still load host sapui5.hana.ondemand.com
var core=sap.ui.getCore();
core.loadLibrary("sap.ui.iot.controls");
通过在 Component.js 中添加一行解决:
init : function() {
jQuery.sap.registerModulePath("sap.ui.iot", "../../../../resources/sap/ui/iot");
}
此外,"sap.ui.iot" 仍然不能在 rootView.view.xml 声明,因为到那时,路径还没有注册。但是 new sap.ui.controls.IoTChart()
可以用在 controller
当我在 Cloud Foundry 的 Fiori 启动板中将 Monitor 应用程序部署为 SAPUI5 应用程序时,遇到错误:
404 Not Found: https://sapui5.hana.ondemand.com/resources/sap/ui/iot/controls/IoTChart.js
我在 FLP 中的配置:
/xs-app.json:
{
"source": "^/resources/sap/ui/iot/(.*)$",
"destination": "IOTAS_CONTROLS",
"target": "/sap/ui/iot/"
}
/mtad.yaml
modules:
requires:
- name: IOTAS_CONTROLS
group: destinations
properties:
forwardAuthToken: true
strictSSL: false
name: IOTAS_CONTROLS
url: ~{url}
resources:
- name: IOTAS_CONTROLS
properties:
url: https://sapuiiot-sb.cfapps.sap.hana.ondemand.com
/Main.view.xml
<mvc:View
controllerName="monitor.controller.Main"
xmlns:iot="sap.ui.iot.controls"
xmlns:iotele="sap.ui.iot.elements"
xmlns:action="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1"
displayBlock="false">
<iot:IoTChart noOfHours="1" headerTitle="Temperature & Gas Volume" subheaderTitle="Unit: Degree & M3"/>
我尝试读取“https://xxx-flp-sandbox.cfapps.sap.hana.ondemand.com/resources/sap/ui/iot/controls/IoTChart.js" in Controller.js
, it is redirected to "https://sapuiiot-sb.cfapps.sap.hana.ondemand.com/sap/ui/iot/controls/IoTChart.js”成功,证明xs-app.json
中的路由有效。
所以我的问题是,如果在 XML 视图中需要 sap.ui.iot.controls
,它总是会调用域:https://sapui5.hana.ondemand.com
而没有在 xs-[=55= 中传递路由].
这个项目在webIDE中运行成功,因为在neo-app.json
中,它定义了一个路由,重定向所有/resource/
,请求总是在webIDE主机中,但是在cloud foundry中, 它在 sapui5.hana.ondemand
host
有什么建议吗?
尝试过:
jQuery.sap.registerResourcePath("iotChart", "../../../../resources/sap/ui/iot/library")
jQuery.sap.require("iotChart")
//Still load host sapui5.hana.ondemand.com
var core=sap.ui.getCore();
core.loadLibrary("sap.ui.iot.controls");
通过在 Component.js 中添加一行解决:
init : function() {
jQuery.sap.registerModulePath("sap.ui.iot", "../../../../resources/sap/ui/iot");
}
此外,"sap.ui.iot" 仍然不能在 rootView.view.xml 声明,因为到那时,路径还没有注册。但是 new sap.ui.controls.IoTChart()
可以用在 controller