Синхронизация хранения касания Sencha

Я новичок в Sencha Touch и все еще не совсем уверен в своих шаблонах обработки данных. То, как я хочу настроить свое приложение, выглядит примерно так:

  1. получить данные пользователя с удаленного сервера через AJAX.

  2. сохранить его в локальном хранилище. Любые изменения (редактирование, добавление, удаление элементов) обновляют локальные данные.

  3. в какой-то момент времени (когда пользователь нажимает "синхронизировать", когда пользователь регистрируется out, или что-то в этом роде), локально сохраненные сохраненные данные синхронизируются с сервером, опять же, через запрос AJAX.

Итак, какова будет основная структура моего приложения, чтобы достичь этого шаблона? А также, пока мы здесь, есть ли способ использовать локальную базу данных (в отличие от локального хранилища ключей) для указанного магазина в Sencha Touch?

1 ответов


прежде всего Сенча.IO Sync предоставляет функциональность, которую вы ищете. Он все еще находится в бета-версии, но он, вероятно, сделает именно то, что вам нужно, и вам не придется самостоятельно размещать базу данных: http://www.sencha.com/products/io

для меня я создал приложения, которые используют localStorage proxy для локального хранения данных. Это очень просто. Вот несколько примеров использования данных хранение:

  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;

у меня есть еще один магазин под названием "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