Sencha Touch 存储同步
Posted
技术标签:
【中文标题】Sencha Touch 存储同步【英文标题】:Sencha Touch storage sync 【发布时间】:2011-09-18 04:03:59 【问题描述】:我是 Sencha Touch 的新手,但对它的数据处理模式仍然不太自信。我想设置我的应用程序的方式是这样的:
通过 AJAX 从远程服务器检索用户数据。
将其保存在本地存储中。任何修改(编辑、添加、删除项目)都会更新本地数据。
在某个时间点(当用户单击“同步”、当用户注销或类似情况时),本地存储的数据再次通过请求 AJAX 与服务器同步。
那么,为了实现这种模式,我的应用程序的基本结构是什么?而且,当我们在这里时,有没有办法在 Sencha Touch 中为指定的存储使用本地数据库(而不是本地键值存储)?
【问题讨论】:
【参考方案1】:首先,Sencha.IO Sync 提供了您正在寻找的功能。它仍处于测试阶段,但它可能会完全满足您的需求,并且您不必自己托管数据库: http://www.sencha.com/products/io
对我来说,我已经构建了使用 localstorage 代理在本地存储数据的应用程序。这非常容易。以下是使用数据存储的几个示例:
-
http://www.sencha.com/learn/taking-sencha-touch-apps-offline/
http://data-that.blogspot.com/2011/01/local-storage-proxy-with-sencha-touch.html
http://davehiren.blogspot.com/2011/09/sencha-touch-working-with-models.html
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 有误,否则您只有三个选择:在线存储、离线存储或只读离线缓存。没有像您期望的双向同步的读/写离线缓存。以上是关于Sencha Touch 存储同步的主要内容,如果未能解决你的问题,请参考以下文章