我刚接触Sencha Touch,对它的数据处理模式还不太自信。我想要设置我的应用程序如下:
通过AJAX从远程服务器检索用户数据。
将其保存在本地存储中。任何修改(编辑、添加、删除项目)都会更新本地数据。
在某个时间点上(当用户点击“同步”时,当用户注销时或类似情况),通过请求 AJAX 将本地存储的数据再次与服务器同步。
那么,为了实现这种模式,我的应用程序的基本结构是什么?另外,在这里,是否有一种方式可以在Sencha Touch中为指定的存储使用本地数据库(而不是本地键值存储)呢?
我刚接触Sencha Touch,对它的数据处理模式还不太自信。我想要设置我的应用程序如下:
通过AJAX从远程服务器检索用户数据。
将其保存在本地存储中。任何修改(编辑、添加、删除项目)都会更新本地数据。
在某个时间点上(当用户点击“同步”时,当用户注销时或类似情况),通过请求 AJAX 将本地存储的数据再次与服务器同步。
那么,为了实现这种模式,我的应用程序的基本结构是什么?另外,在这里,是否有一种方式可以在Sencha Touch中为指定的存储使用本地数据库(而不是本地键值存储)呢?
首先,Sencha.IO Sync 提供了您所需要的功能。虽然它仍处于测试阶段,但它很可能会完全符合您的需求,并且您不需要自己托管数据库:http://www.sencha.com/products/io
对我来说,我构建的应用程序使用本地存储代理将数据存储在本地。这非常简单。以下是一些使用数据存储的示例:
稍后,在应用程序中,我有一个 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