【问题标题】:Sencha Touch storage syncSencha Touch 存储同步
【发布时间】:2011-09-18 04:03:59
【问题描述】:

我是 Sencha Touch 的新手,但对它的数据处理模式仍然不太自信。我想设置我的应用程序的方式是这样的:

  1. 通过 AJAX 从远程服务器检索用户数据。

  2. 将其保存在本地存储中。任何修改(编辑、添加、删除项目)都会更新本地数据。

  3. 在某个时间点(当用户单击“同步”、当用户注销或类似情况时),本地存储的数据再次通过请求 AJAX 与服务器同步。

那么,为了实现这种模式,我的应用程序的基本结构是什么?而且,当我们在这里时,有没有办法在 Sencha Touch 中为指定的存储使用本地数据库(而不是本地键值存储)?

【问题讨论】:

    标签: model-view-controller sencha-touch local-storage


    【解决方案1】:

    首先,Sencha.IO Sync 提供了您正在寻找的功能。它仍处于测试阶段,但它可能会完全满足您的需求,并且您不必自己托管数据库: http://www.sencha.com/products/io

    对我来说,我已经构建了使用 localstorage 代理在本地存储数据的应用程序。这非常容易。以下是使用数据存储的几个示例:

    1. http://www.sencha.com/learn/taking-sencha-touch-apps-offline/
    2. http://data-that.blogspot.com/2011/01/local-storage-proxy-with-sencha-touch.html
    3. http://davehiren.blogspot.com/2011/09/sencha-touch-working-with-models.html
    4. http://www.sencha.com/learn/working-with-forms/

    稍后在应用程序中我有一个 AJAX 调用,它将获取所有本地数据并将其发送到服务器以生成一些报告。

    一旦您正确设置了商店和模型,就很容易从中取回数据。例如,我有一个只有一个条目的 contactInfo 商店:

    var myContactInfo = contactInfo.first().data;
    

    我有另一个名为 settings 的商店,里面有很多条目。我可以像这样轻松地检索它们(尽管可能有更好的方法):

    var settingsArr = []
    settings.each(function() {
        settingsArr.push(this.data);
    });
    

    然后我可以像这样轻松地将它发送到服务器:

    var data = {settings: settingsArr, contactInfo: myContactInfo};
    Ext.Ajax.request({
    url: 'save.php',
    params: {json: Ext.encode(data)},
    success: function(response, opts) {
           // celebrate
    }
    });
    

    与所有事情一样,一旦您了解了基础知识,请仔细查看示例和 API 应该会对您有所帮助: http://dev.sencha.com/deploy/touch/docs/?class=Ext.data.Store

    【讨论】:

    • 我看起来 Sencha.io 是一个内部云解决方案。它将在您使用 Sencha 编程的设备之间同步。但是,如果您希望在 Sencha 应用程序和 REST 服务器(可能是 Rails?)之间进行同步,那么就没有像其他系统那样可用的 sync 了。除非我对 sencha 有误,否则您只有三个选择:在线存储、离线存储或只读离线缓存。没有像您期望的双向同步的读/写离线缓存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多