Sencha Touch存储同步

Arn*_*old 6 model-view-controller local-storage sencha-touch

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

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

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

  3. 在某个时间点(当用户点击"同步"时,当用户退出时,或类似的东西),本地存储的存储数据再次通过请求AJAX与服务器同步.

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

Jam*_*son 8

首先,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;
Run Code Online (Sandbox Code Playgroud)

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

var settingsArr = []
settings.each(function() {
    settingsArr.push(this.data);
});
Run Code Online (Sandbox Code Playgroud)

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

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

与所有事情一样,一旦您了解了基础知识,就可以很好地了解示例和API:http://dev.sencha.com/deploy/touch/docs/? class = Ext.data.Store