我在Eclipse中用mockdata编写了一个SAPUI5应用程序。当我在formatter.js中调用特定方法来填充图像source-property时,方法" formatMapUrl"没有被执行:
Object.view.xml:
<Image src="{ parts: [ 'ToSupplier/Address/Street', 'ToSupplier/Address/PostalCode', 'ToSupplier/Address/City', 'ToSupplier/Address/Country' ], formatter: '.formatter.formatMapUrl' }"/>
文件formatter.js的其他方法在同一个文件中被调用:
Object.view.xml:
<ObjectHeader id="objectHeader" title="{ProductID}" number="{ path: 'Price', formatter: '.formatter.numberUnit' }"
numberUnit="{CurrencyCode}" responsive="true">
这是相关的方法:
formatter.js:
formatMapUrl : function (sStreet, sZIP, sCity, sCountry) {
return "https://maps.googleapis.com/maps/api/staticmap?zoom=15&size=640x400&markers=" + jQuery.sap.encodeURL(sStreet + ", " + sZIP + " " + sCity + ", " + sCountry);
}
方法本身也应该是正确的,因为我在其他应用程序中使用它。动态路径应该是正确的(例如&#34; ToSupplier / Address / Street&#34;),因为我在同一个应用程序和文件中成功使用它们,如下所示:
Object.view.xml:
<StandardListItem icon="sap-icon://map" title="{ToSupplier/Address/City}"/>
我试图通过Firefox中的Web控制台在浏览器中调试应用程序,并发现该方法没有被执行。
在另一个应用程序中,我创建了一个模型&#34; Address.json&#34;并成功地使用它:
<Image src="{ parts: [ 'address>/Street', 'address>/ZIPCode', 'address>/City', 'address>/Country' ], formatter: '.formatter.formatMapUrl' }"/>
答案 0 :(得分:1)
符号应为
<Image src="{
parts: [
{ path: 'ToSupplier/Address/Street' },
{ path: 'ToSupplier/Address/PostalCode' },
{ path: 'ToSupplier/Address/City' },
{ path: 'ToSupplier/Address/Country' }
],
formatter: '.formatter.formatMapUrl'
}" />
(注意path
数组的每个parts
属性)
答案 1 :(得分:0)
编辑(25.07.2016): 由于某些原因,某些图片也未在Chrome中显示。首先我认为那是因为地址错误而我在mockdata文件中输入了我知道的真实地址。但没有改变。也许这是谷歌本身的限制?
编辑(26.07.2016): 我再次调试了应用程序。这次使用谷歌Chrome开发者工具。并且控制台中显示了一些有趣的错误:staticmap:1 GET https://maps.googleapis.com/maps/api/staticmap?zoom=15&size=640x400&markers=Morning%20Drive%2c%2091602%20Hollywood%2c%20California%2c%20US 403()
确实,谷歌存在局限性 - 取决于用户发送给api的“获取”数量。以下是SCN上线程的链接:http://scn.sap.com/thread/3936298