localstorage データソースを使用して多数のレコードを保存する sencha touch 2 Web アプリがあります。
通常の crud 操作はすべて正常に実行できますが、Web サービスを使用してデータを同期したいと考えています。定期的に、sencha アプリは Web サービスをポーリングしてデータの変更を確認し、その後、sencha アプリの localstorage データソースに必要な変更を加えます。
私のアプローチは、次のコード ブロックを使用して、60 秒ごとに同期プロセスを実行することでした。
var timerID = setInterval(function()
{
MyApp.app.BackgroundProcessingMain();
}, (60000));
「BackgroundProcessingMain()」内には、さまざまなデータストアを同期するためのさまざまなメソッド呼び出しがあります (5)。
Web サービスを呼び出して、必要なデータを取得します。次に、返されたデータをループし、ストアを返されたデータの現在のアイテムの ID にフィルター処理してから、必要に応じて削除または更新するというアプローチをとっています。 . これは正常に動作します..しかし、このバックグラウンド プロセスが開始され、バインドされたリスト コントロールを表示している場合、データソースのフィルター処理されたバージョンを使用しているリストは、突然単一のアイテムのみを表示するようにドロップダウンします。通常は最後のアイテムです。私の更新プロセスが操作するためにストアをフィルタリングした最後のデータだったので、同期する必要がある返されたデータ。
store.findById を使用してレコード参照を取得し、そのように更新/削除できると考えましたが、バインドされたリストが必要とするビューのために特定の ID が既に除外されている場合、レコードはストアで見つからないため、更新されない..
私ができるようにしたいのは、フィルター処理されていないストアの一時的なコピーを取得し、それを変更できるようにすることです。次に、フォームが次に表示されたときにアプリがローカルストレージを照会すると、新しい更新されたものを取得するだけですデータ..
タイトルの「静かに」とは、基本的にはそういう意味です。
この更新を完了するためにどのようなプロセスを実行できるかについて、誰か提案がありますか..??
サンプルコードがあれば素晴らしいですが、疑似コードでも問題ありません..
ありがとう