2011-12-05 16 views
4

からのロード:BACKBONE.JSローカルストレージ、私は意志BACKBONE.JS使用してモバイルアプリケーションを構築しようとしているサーバーの前払い

  1. その最初の実行時にサーバーから項目のリストをロードしますローカルストレージにこれらをコミット(私はバックボーン-localstorage.jsを使用しています)
  2. アプリがへのデータの変更をコミットすることはありません

ローカルストレージにこれを保存し、お気に入りとしてリスト項目を保存することができますサーバーだけで動作するローカルストレージに保存します。

サーバーから手動でデータをロードしてコレクションにデータを読み込んでいますが、データはすべてローカルストレージに転送できません。

私は壁に向かって頭を叩いて、これを動作させようとしています。どのようにこれを解決するための任意のアイデアは高く評価されます。私が見たすべての例は、サーバーにコミットするか、純粋なローカルストレージです。

答えて

5

少しのコード例が役に立ちます。

ローカルストレージを使用している場合は、最初の実行時にサーバーからアイテムのリストをロードする方法がわかりませんが、これはおそらく一緒に配置する方法です。

アプリの実行中にモデルを更新するためにサーバに戻ってくる必要がない場合は、アプリケーションに埋め込まれたサーバからモデルを単純に配信し、詳細情報については

foo = new MyCollection(myJSONthatContainsAllTheModels) 

を、バックボーンドキュメントでBootstrappingを参照してください:あなたのコレクションを作成します。

あなたは、アプリの実行の過程で、定期的にサーバから更新する必要がある場合には、...

使用バックボーン-のlocalStorageは、単一の変更と、通りです。これは、syncメソッドと通常の "fetch"、 "save"などの関数をオーバーライドすることがローカルストレージを操作することを意味します。 Backbone.SyncをLocalStorageバージョンに置き換える前に、元のBackbone.SyncをBackbone.ServerSyncのような新しい関数にコピーすることになります。これにより、REST同期が維持されます。

次に、Backbone.ServerSync関数を使用して、サーバーからデータをフェッチするために使用される新しい関数でBackbone.Collectionを拡張します。

backbone-localstorageはコレクションのURLプロパティを妨げるようには見えないので、これを非常に簡単に行うことができます。明確にするため

言う、と呼ばれるこの新しいコレクション機能、serverfetchは多かれ少なかれフェッチのクローンではなく、代わりにBackbone.SyncのごBackbone.ServerSyncメソッドを使用します。

サーバからの応答を取得して解析した後、ローカルストレージにコミットするモデルごとにaddを呼び出します。

+1

ありがとうエドワード!あなたは正しい軌道に乗っています。私はあなたが示唆したようにそれを実装し、それは魅力的な作品です。私はしかし、サーバーからの最初の負荷をブートストラップしないようにしました。これは、データがローカルストレージにない場合にのみ発生します。これは、常に太ったJSONオブジェクトでページを軽くする必要はないようです。 –

+1

優秀!それがうまくいくのを聞いてうれしい。 –

+0

私はバックボーンの初心者で、このソリューションのために長い時間をかけて検索していますが、any1はjsfiddleのサンプルサンプルを提供するだけです - サーバからデータを取得してlocalstorage –

関連する問題