使用OpenUI5和Apache Cordova进行本地存储

时间:2014-09-29 19:23:51

标签: javascript jquery cordova sap sapui5

我正在使用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);

3 个答案:

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