formatter.js中的方法不能被称为

时间:2016-07-25 12:15:30

标签: binding path sapui5 formatter

我在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' }"/>

2 个答案:

答案 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)

嗯......这很奇怪,但我想我弄清楚了: 在我的情况下,由Google地图呈现的图片无法在Firefox或Opera中显示。它只适用于谷歌浏览器。我在SAPUI5中使用模型中的数据创建了一些应用程序,并且每个浏览器中都显示了地图,但在使用mockdata的应用程序中,它似乎是不可能的。也许是因为有约束力?还是相关的流程?我不知道。我希望我可以帮助这个人。感谢Qualiture的帮助! :)

编辑(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