2012-04-26 8 views
0

私はバックボーンを使い始めました。私はthis localStorage adapterを使いました。私はそれがloaded: undefinedたびに言うのページを複数回読み込む場合backbone.js:単純なモデルをlocalStorageに永続化する

cartStatus = Backbone.Model.extend({ 
    localStorage: new Store("cartStatus"), 
    currentClientId: "" 
}); 

var myStatus = new cartStatus; 

$(function() { 
    myStatus.fetch(); 
    alert("loaded" + myStatus.get("currentClientId")); 
    myStatus.set({ "currentClientId": "abc" }); 
    myStatus.save(); 
}); 

: はここに私のテストコードです。 しかし、私の2回目のロード後、私は毎回loaded: abcを期待していました。 私はこれを参照してください2つの負荷後の私のlocalStorageを検査する場合:

cartStatus-d2a7b64d-2f15-a741-9a8c-e254b4a13682 {"0":{"currentClientId":"abc","id":"dd5e0e47-9356-ea30-2de3-75a041848b88"},"currentClientId":"abc","id":"d2a7b64d-2f15-a741-9a8c-e254b4a13682"} 
cartStatus dd5e0e47-9356-ea30-2de3-75a041848b88,d2a7b64d-2f15-a741-9a8c-e254b4a13682 
cartStatus-dd5e0e47-9356-ea30-2de3-75a041848b88 {"currentClientId":"abc","id":"dd5e0e47-9356-ea30-2de3-75a041848b88"} 

誰が間違って何が起こっているのか知っていますか?

編集
私はこれを実証jsfiddleを作成しました(2回それを実行)http://jsfiddle.net/Myster/fE9eQ/3/

+0

ローカルストアでも、 'fetch'の' success'オプションでアラートを試みたことがありますか? – tkone

+0

成功コールバックが発生しました(上記の編集でjs fiddleを参照) – Myster

答えて

0

@tkone、あなたは私が思う正しい答えを示唆しています。フェッチは非同期なので、jquery deferredsを使用しないか、成功コールバックでモデルset/saveを実行しない限り、これが動作になります。

cartStatus = Backbone.Model.extend({ 
    localStorage: new Store("cartStatus"), 
    currentClientId: "" 
}); 

var myStatus = new cartStatus(); 

$(function() { 
    debugger; 
    myStatus.fetch({ 
     success: function(x) { 
      document.write('myStatus.fetch - success !<br />'); 
      myStatus.set("currentClientId", "abc"); 
      myStatus.save(); 
     } 
    }); 
}); 
+0

この例では、ページを4回リフレッシュすると、localStorage内に4つの項目があります(後続の各バージョンには前のバージョンが入れ子になっています)。更新される1つのアイテムだけです。 – Myster

関連する問題