是否存在用于在SAP UI5 App中加载图像的稳定解决方案?

时间:2019-04-18 14:26:01

标签: sapui5

Images文件夹包含许多图像,例如xxx.png,yyy.png等。

Image src =“ ./ images / xxx.png”在我测试时以及部署到SCP后效果很好。但是,当我将应用程序注册到Launchpad并从那里打开它时,这是行不通的。为什么无法加载图片?

我在网络中看到以下内容:

Component.js正在从中加载

https://xxxxxx-yyyyy.dispatcher.eu3.hana.ondemand.com/sap/fiori/workbox/Component.js?ts=1.0.143,状态为200

但是图像正试图从中获取负载

https://xxxxxx-yyyyy.dispatcher.eu3.hana.ondemand.com/images/xxx.png

https://xxxxxx-yyyyy.dispatcher.eu3.hana.ondemand.com/images/yyy.png,结果为404。而该匹配应该是我在以下网址上找到的。

https://xxxxxx-yyyyy.dispatcher.eu3.hana.ondemand.com/images/sap/fiori/workbox/images/xxx.png

我尝试将Image src更改为src =“ ./ images / xxx.png”和src =“ / images / yyy.png”。但是,相同的旧网址会被命中,并导致404。

为什么会这样?为什么component.js和图像从不同的根目录加载?我发现了许多建议使用jQuery.sap.getModulePath(“ com.xxx.Component”)的答案,但这对我没有多大帮助。它给了我https://sapui5.hana.ondemand.com/resources/com/xxx/Component,这毫无用处。

1 个答案:

答案 0 :(得分:2)

旧帖子,但让我尝试帮助您。

为了从本地项目文件夹结构中检索文件,您需要计算它们的正确路径。这与 FLP 环境相关,因为应用在加载时会分配动态路径。

sap.ui.require.toUrl 是可以为您解决问题的神奇函数。

此函数需要一个路径作为输入参数,并将其转换为 FLP 内的工作路径。请参阅method description

示例

<Image src="{
  value: 'your/name/space/images/xxx.png',
  formatter: 'sap.ui.require.toUrl'
}" />

sap.ui.require.toUrl 从 UI5 1.58 开始替换 deprecated jQuery.sap.getModulePath

从 1.61 版开始,可以通过问题 Pass Static Value to Formatter Parameters in XML View 中提到的属性绑定中的 value 将静态值传递给格式化程序函数。

如果格式化程序不适合您,您可以尝试在控制器中调用该函数并将计算出的路径存储在本地 JSONModel 中。这个我没测试过,不过原理应该是一样的。

祝你好运!

附注;第一个帖子。非常欢迎任何关于改进的反馈:)

相关问题