我正在使用OpenUI5和Cordova构建移动应用。此应用程序使用OData服务但必须支持完整的脱机功能。有很多选项可以使用Cordova存储数据,例如LocalStorage,Web SQL甚至FileWriter。另外我发现OpenUI5框架提供了jQuery.sap.storage来通过LocalStorage存储数据,但由于存储容量有限(5MB),我无法考虑这个选项。
是否可以从OData服务请求整个数据模型并将其转换为JSON模型?因为如果有任何方法可以实现这一点,我可以使用FileWriter为模型中的每个实体(和元数据文件)编写文件,并在应用程序脱机时使用此模型。
有没有人试图做这样的事情?
被修改
感谢您的回答......
我使用jumpifzero技巧将数据从OData服务设置到Json模型中,如下所示:
var sServiceUrl = "http://address:port/DataService.svc/";
var odataModel = new sap.ui.model.odata.ODataModel(sServiceUrl, true);
var jsonModel = new sap.ui.model.json.JSONModel();
odataModel.read("/Dates", {
async: false,
success: function (odata, response) {
jsonModel.setData({ Dates: odata.results });
}
});
this.setModel(jsonModel);
答案 0 :(得分:0)
您还可以使用.read方法读取每个实体集的odata,而不使用任何过滤器。在给予read的success函数中,您可以将JS对象放在JSON模型中。 您可以创建一个在线时从odata填充JSON模型的图层,以及离线时从localstorage填充的图层。
答案 1 :(得分:0)
您可以选择使用SAP Mobile Platform附带的离线Kapsel插件(SAP开发的Cordova插件)创建离线应用(CRUD)。您应该购买SAP Mobile Platform的许可证。 您可以在此处找到更多信息:http://scn.sap.com/docs/DOC-58063
答案 2 :(得分:0)
我不建议离线Kapsel插件。它还不够成熟,并且它正在开发中。此外,您需要一个SMP服务器用于离线功能。 我宁愿说你应该使用根据你的需要形成的半生不熟的解决方案,例如:http://coenraets.org/blog/2012/05/simple-offline-data-synchronization-for-mobile-web-and-phonegap-applications/