Sencha Touch存储同步

6

我刚接触Sencha Touch,对它的数据处理模式还不太自信。我想要设置我的应用程序如下:

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

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

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

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

1个回答

8

首先,Sencha.IO Sync 提供了您所需要的功能。虽然它仍处于测试阶段,但它很可能会完全符合您的需求,并且您不需要自己托管数据库:http://www.sencha.com/products/io

对我来说,我构建的应用程序使用本地存储代理将数据存储在本地。这非常简单。以下是一些使用数据存储的示例:

  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;

我有一个名为“设置”的存储库,里面有很多条目。我可以轻松地像这样检索它们(虽然可能有更好的方法):

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错了,否则您只有三个选项:在线存储、离线存储或只读离线缓存。没有读/写离线缓存,就像您期望的双向同步一样。 - Sukima

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接