2011-09-18 22 views
6

私はSencha Touchを初めて使いましたが、データ処理パターンにはまだまだ自信がありません。Sencha Touch storage sync

  1. AJAX経由でリモートサーバーからユーザーのデータを取得します。私は自分のアプリケーションを設定する方法は、このようなものです。

  2. ローカルストレージに保存します。変更(項目の編集、追加、削除)はローカルデータを更新します。

  3. ある時点(ユーザが「同期」をクリックしたとき、ユーザがログアウトしたときなど)には、ローカルに記憶された記憶データがリクエストAJAXを介してサーバと再び同期される。

このパターンを達成するには、アプリケーションの基本構造はどのようなものでしょうか?また、ここにいる間に、Sencha Touchの指定された店舗にローカルデータベース(ローカルのKey-Valueストレージではなく)を使用する方法がありますか?

+1

今私は同じ状況になっています。 – Neutralizer

答えて

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; 

私は多くのエントリを持っている設定と呼ばれる別の店を持っています。 (より良い方法があるかもしれませんが)、私は簡単にこのようにそれらを取得することができます。

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

+0

は美しく答えました。 –

+0

Sencha.ioは社内クラウドソリューションのようです。 Senchaでプログラムするデバイス間で同期します。しかし、あなたのSenchaアプリとRESTサーバー(Railsはおそらく?)を同期させたい場合は、他のシステムと同様に_sync_が利用できません。私が間違っていない限り、オンラインストレージ、オフラインストレージ、または読み取り専用オフラインキャッシュの3つのオプションしかありません。双方向の同期で期待しているように、オフラインキャッシングを読み書きすることはありません。 – Sukima