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,这毫无用处。
答案 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 中。这个我没测试过,不过原理应该是一样的。
祝你好运!
附注;第一个帖子。非常欢迎任何关于改进的反馈:)