Model view controller Sencha触摸存储同步

Model view controller Sencha触摸存储同步,model-view-controller,sencha-touch,local-storage,Model View Controller,Sencha Touch,Local Storage,我是SenchaTouch的新手,对它的数据处理模式还不是很有信心。我希望设置应用程序的方式如下: 通过AJAX从远程服务器检索用户数据 将其保存在本地存储器中。任何修改(编辑、添加、删除项目)都会更新本地数据 在某个时间点(当用户单击“同步”、当用户注销或类似情况时),本地存储的数据再次通过AJAX请求与服务器同步 那么,为了实现这种模式,我的应用程序的基本结构是什么?另外,在这里,是否有一种方法可以为Sencha Touch中的指定存储使用本地数据库(而不是本地键值存储)?首先,Sencha

我是SenchaTouch的新手,对它的数据处理模式还不是很有信心。我希望设置应用程序的方式如下:

  • 通过AJAX从远程服务器检索用户数据

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

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


  • 那么,为了实现这种模式,我的应用程序的基本结构是什么?另外,在这里,是否有一种方法可以为Sencha Touch中的指定存储使用本地数据库(而不是本地键值存储)?

    首先,Sencha.IO Sync提供您想要的功能。它仍处于测试阶段,但它可能会完全满足您的需要,并且您不必自己托管数据库:

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

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

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

    var myContactInfo = contactInfo.first().data;
    
    我有另一个名为“设置”的商店,它有许多条目。我可以像这样轻松地检索它们(尽管可能有更好的方法):

    然后我可以轻松地将其发送到服务器,如下所示:

    var data = {settings: settingsArr, contactInfo: myContactInfo};
    Ext.Ajax.request({
    url: 'save.php',
    params: {json: Ext.encode(data)},
    success: function(response, opts) {
           // celebrate
    }
    });
    
    正如所有的事情一样,仔细看一下示例和API,一旦您掌握了基本知识,它将对您有所帮助:

    我觉得Sencha.io是一个内部云解决方案。它将在您使用Sencha编程的设备之间同步。但是,如果您希望在Sencha应用程序和REST服务器(可能是Rails?)之间进行同步,则无法像其他系统那样进行同步。除非我对sencha有错,否则您只有三种选择:在线存储、离线存储或只读离线缓存。没有像双向同步所期望的那样的读/写脱机缓存。
    var data = {settings: settingsArr, contactInfo: myContactInfo};
    Ext.Ajax.request({
    url: 'save.php',
    params: {json: Ext.encode(data)},
    success: function(response, opts) {
           // celebrate
    }
    });