17

私はJerome's localStorageアダプタをバックボーンとともに使用しています。ローカルストレージにモデルを保存する

しかし、私は保存する必要がある単一のモデルがあります。そこで私のモデルでは、私は次のように設定しました:

localStorage: new Store("msg") 

私は私のセーブとフェッチを行います。私の問題は、私がリフレッシュしてアプリケーションを初期化するたびに、モデルの新しい表現がlocalStorageに追加されることです。以下を参照してください。

私は間違っていますか?

window.localStorage.msg = { 
    // Created after first run 
    "1de5770c-1431-3b15-539b-695cedf3a415":{ 
    "title":"First run", 
    "id":"1de5770c-1431-3b15-539b-695cedf3a415" 
    }, 
    // Created after second run 
    "26c1fdb7-5803-a61f-ca12-2701dba9a09e":{ 
    "0":{ 
     "title":"First run", 
     "id":"1de5770c-1431-3b15-539b-695cedf3a415" 
    }, 
     "title":"Second run", 
     "id":"26c1fdb7-5803-a61f-ca12-2701dba9a09e" 
    } 
    } 

答えて

29

同じ問題が発生しました。たぶん、あなたは私がID文句を言わない作業のため

case "read": resp = model.id ? store.find(model) : store.findAll(); break; 

ので0または""のようにidの

var s = new Settings({ id: 1 }); 

のlocalStorageアダプタチェック

に変更し、この

var Settings = Backbone.Model.extend({ 
    localStorage: new Store("Settings"), 
    defaults: { a: 1 } 
}); 

var s = new Settings; 
s.fetch(); 

に似た何かを持っているし、それがすべて返されます1つのモデル

+0

正しい:

はそれを行う方法の詳細については、この質問を見てください!ありがとう@lublushokolad;) – guillaumepotier

+0

本当にありがとうございます。あなたはちょうど1日の長い頭痛を終えた! –

+3

githubの質問/問題にリンクするhttps://github.com/jeromegn/Backbone.localStorage/issues/56 –

6

私はバックボーンに新しいです。 jsもありますが、パーシスタンスモデルはデータベーステーブルに似ています。つまり、テーブルからレコードを作成/削除/読み込むように設計されています。 localStorageアダプタも同じことをしているので、localStorageにメッセージ "テーブル" を作成し、毎回新しいメッセージ "レコード"を作成すると、アダプタは新しいメッセージにそれぞれ一意のIDを与えます。

オブジェクトが1つだけの場合は、localStorageを直接使用するほうが簡単でしょう。 APIは本当に単純です:あなたは文字列形式へ/から変換する必要があると思いますので、

localStorage.setItem("key","value"); 

は、文字列としてのキー/値のペアを扱うだけのlocalStorageに注意してください。

Storing Objects in HTML5 localStorage

関連する問題