2011-09-18 16 views
6

Jestem nowym użytkownikiem Sencha Touch i wciąż nie do końca jestem pewien jego wzorców przetwarzania danych. Sposób, w jaki chcę skonfigurować moją aplikację, jest podobny do następującego:Synchronizacja pamięci dotykowej Sencha

  1. Pobierz dane użytkownika ze zdalnego serwera za pośrednictwem AJAX.

  2. Zapisz w pamięci lokalnej. Wszelkie modyfikacje (edycja, dodawanie, usuwanie elementów) aktualizują lokalne dane.

  3. W pewnym momencie (kiedy użytkownik kliknie "Synchronizuj", kiedy użytkownik się wyloguje lub coś w tym stylu) lokalnie przechowywane przechowywane dane są synchronizowane z serwerem, ponownie za pośrednictwem żądania AJAX.

Jaka byłaby podstawowa struktura mojego wniosku, aby osiągnąć ten wzór? A także, skoro już tu jesteśmy, czy istnieje sposób na użycie lokalnej bazy danych (w przeciwieństwie do lokalnego magazynu kluczy i wartości kluczowej) dla określonego sklepu w Sencha Touch?

+1

Mam teraz tę samą sytuację. – Neutralizer

Odpowiedz

8

Przede wszystkim Sencha.IO Sync zapewnia funkcjonalność, której szukasz. Nadal jest w fazie beta, ale prawdopodobnie zrobi dokładnie to, czego potrzebujesz i nie będziesz musiał hostować bazy danych sam: http://www.sencha.com/products/io

Dla mnie zbudowałem aplikacje, które używają lokalnego serwera proxy do przechowywania danych lokalnie. To bardzo proste. Oto kilka przykładów wykorzystania przechowywania danych:

  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/

Później w aplikacji Mam wywołanie AJAX, który zabierze wszystkich dane lokalne i wyślij je na serwer, aby wygenerować kilka raportów.

Po prawidłowym skonfigurowaniu sklepów i modeli można łatwo odzyskać dane. Na przykład mam sklep ContactInfo że tylko kiedykolwiek ma jeden wpis:

var myContactInfo = contactInfo.first().data; 

mam inny sklep o nazwie ustawienia, które ma wiele wpisów. I łatwo można je odzyskać w ten sposób (choć może istnieć lepszy sposób):

var settingsArr = [] 
settings.each(function() { 
    settingsArr.push(this.data); 
}); 

I wtedy można łatwo wysłać to do serwera tak:

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

Jak wszystkie rzeczy dobry spójrz na przykłady, a interfejs API powinien ci pomóc, kiedy już poznasz podstawy: http://dev.sencha.com/deploy/touch/docs/?class=Ext.data.Store

+0

beautifuly odpowiedział. –

+0

Wygląda na to, że Sencha.io jest rozwiązaniem w chmurze domowej. Synchronizuje urządzenia, które programujesz z Sencha. Jednak jeśli szukasz synchronizacji między aplikacją Sencha i serwerem REST (może Rails?), Wtedy nie ma dostępnej _sync_, jak w przypadku innych systemów. O ile nie myliłem się z sencha, masz tylko trzy opcje: przechowywanie w trybie online, przechowywanie w trybie offline lub buforowanie offline w trybie tylko do odczytu.Brak buforowania w trybie offline do odczytu i zapisu, jakiego można się spodziewać po dwukierunkowej synchronizacji. – Sukima