这里来记录在学习Fiori开发中的一个又一个坑
###coding
日期字段显示
如果不做转换,日期的显示是这样的:
为了看起来‘正常’一点,需要格式化转一下:
再试试把formatOptions: { pattern: 'YYYY.MM.dd' }省略了看一下
有一个blog可以参考:http://www.furkansonmez.com/sapui5-fiori-how-to-format-odata-time/
View 之间传递数据
View 之间进行数据的传递除了用route之外还可以用model,下面是一个示例:
在Component.js或是Manifest.json文件中定义一个全局JSONModel:
在发送页面的Controller:
接收页面的Controller:
splitApp直接打开detail的URI(未解决)
如下图,开发完这个spliApp页面后直接执行没有问题,detail view也打开了第一条数据
但是,如果直接在浏览器中用“http://localhost:53342/webapp/index.html#/detail/300000097”来打开页面,或是这里刷新页面的话,就会是下面的界面
这是哪里出的问题呢?我能想到的是输入地址或是刷新地址”http://localhost:53342/webapp/index.html#/detail/300000097",我们并没有直接处理这个URI patten的逻辑
传输至FLP后,loadData用到的json数据为空
今天做一个demo演示,很简单的效果,就是一个panel下放了一个list,list是自己mock的一些数据,所以直接声明JSONModel,然后loadData,一切正常。几分钟搞定。
数据:
代码1:
传输到FLP后问题出现了,界面只显示label,后面的数据列是空的!很显然是json文件中的数据没有load到model中,怎么办,最笨的办法就是把数据写在contoller里,于是有了下面的代码2:
这样写死了肯定不会有问题,但我的json数据文件就没用了啊,这不行,要找到原因,于是简单google了一下,找到了这个APIjQuery.sap.getModulePath,这个会根据服务的相对路径找到要load的文件路径。正式的生产环境都是要这么用的。于是有了代码3:
setVisible传输至FLP后不好用
这也是个坑!
连接配置
Service can not be reached

WEBIDE在需要和前端Server进行通信时报Service can not be reached,这是因为前端server有一个服务没有激活,下面这个adt服务激活就好了。
发布部署
部署后没有dist文件夹生成
在WEBIDE开发完成以后部署到前端服务器时碰到了这样一个问题。


虽然提示部署成功The application has been deploied in XXX,但目录下却没有dist文件夹出现,解决办法如下:
- 新建一个webapp目录,将除
neo-app.json之外的文件和文件夹全部剪切到webapp目录下。 - 修改
neo-app.json的welcomeFile属性值,这里是由’index.html’改为了’webapp/index.html’。 - 右键打开
project setting,把SAPUI5 Client Build选中。保存后会多了一个Build Configuration的tab配置页。(可以在Build时额外再调整想要增加或是排除的文件。这里不需要做任何操作)

然后重新部署,发现应该出现的dist文件夹出来了:)
dist文件夹下还会自动生成Component-preload.js,这里其实也是一个坑,如果没有这个文件,你的APP一样会报错…
COSR 跨域
这是一个大坑,尤其对于以前没有做过Web开发的我们来说更是灾难。先说一下现有开发环境是怎么解决的。
- 如果开发环境是用的eclipse,这个问题很好解决,就是在odata的URI地址前加/proxy/http/ ,eclipse内置的反向代理会自动代理链接服务。
- 如果开发环境用的是WEBIDE,这个问题也好解决,就是配Destination,配这个的目的也是配置WEBIDE的反向代理。
- 如果,这个如果也是我目前碰到的问题,项目只使用Gateway的Odata服务,简单的BS结构,没有引用SAPUI5的任何库,可以说和SAP没什么问题,只是用它提供的一个REST服务。这时候坑就来了,如果用JSONP,SAP这个声称自己是符合国际标准的Odata服务没有callback参数!不支持callback回调!!坑啊!目前我们用了一个临时的替代方案,使用普通的ajax调用,并且在服务中(sicf)写死用户名和密码。1234567$.ajax({url: "http://10.212.139.247:8000/sap/opu/odata/sap/ZGJZ_TEST_SRV/ZGJZ_USERSet?$format=json",type:'GET',success:function(json, textStatus) {console.log(json);},});





































































