В Sencha Touch действительно очень просто «синхронизировать» и онлайн-магазин с извлеченными данными в другой «автономный» магазин.
Определение автономного магазина:
// Offline store (local storage)
var schouwLijstOffline = new Ext.data.Store({
model: "schouwLijst",
storeId: 'schouwLijstOffline',
proxy: {
type: 'localstorage',
id: "schouwid"
},
});
Теперь вы можете использовать прослушиватель в вашем главном хранилище (первая выборка данных) и прослушивать событие загрузки (в данном случае вызванное вручную из-за 'autoLoad: false'.
В загрузчике вы 'очищаете ()' прокси автономного хранилища, а затем заполняете автономное хранилище данными с помощью функции storeId '* .add () *.
В моем примере я затем удаляю всю информацию из «оффлайн-хранилища», так как она мне больше не нужна (сейчас она находится в автономном режиме.
Интернет-магазин со слушателем:
var schouwLijstStore = new Ext.data.Store({
model: "schouwLijst",
storeId: "schouwLijstStore",
proxy: {
type: 'ajax',
url: 'php/json.php?t=list',
reader: {
type: 'json',
root: 'list'
},
},
autoLoad: false,
listeners: {
load: function() {
// Clear proxy from offline store
schouwLijstOffline.proxy.clear();
// Loop through records and fill the offline store
this.each(function(record) {
schouwLijstOffline.add(record.data);
});
// Sync the offline store
schouwLijstOffline.sync();
// Remove data from online store
schouwLijstStore.removeAll();
}
}
});
Теперь, когда вы делаете новый запрос на выборку новых фильтров / данных, вы можете повторить тот же процесс:
- Запуск интернет-магазина (storeId.update ();)
- Слушатель добавляет данные из интернет-магазина в офлайн-магазин
- Используйте оффлайн-магазин
Справочная:
Чтобы удалить все данные из хранилища, вы можете использовать: storeId.removeAll ();
Думаю, это поможет вам в правильном направлении, если что-то неясно, скажите, пожалуйста.