Синхронизация хранилища Sencha Touch - PullRequest
6 голосов
/ 18 сентября 2011

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

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

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

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

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

1 Ответ

8 голосов
/ 29 сентября 2011

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

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

  1. http://www.sencha.com/learn/taking-sencha-touch-apps-offline/
  2. http://data -that.blogspot.com / 2011/01 / локальное хранение прокси-с-сенч-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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...