【问题标题】:Duplication localStorage data using backbone.js + backbone.localStorage.js使用backbone.js+backbone.localStorage.js复制localStorage数据
【发布时间】:2012-05-19 21:56:33
【问题描述】:

我正在使用主干 + 主干.localStorage 来保存我的数据,但我得到了一个错误的行为:

我有一个模型设置,其中包含一个名为 user 的属性

Settings = Backbone.Model.extend({
    localStorage : new Backbone.LocalStorage('settingsStore')
});
var settings = new Settings();
settings.set({user: 'USERNAME'});
settings.save();

在这段代码之后,如果我在 weinre 中输出 settings.attributes 数据,我会得到以下信息:

  settings.attributes  
   Object  
   id: "3ac78cfb-ad60-1ab8-8391-f058ae9bfcfb"  
   user: "USERNAME"  
   __proto__: Object

然后我将模型保存到 localStorage,清除,然后再次获取它:

settings.save();
settings.clear();
settings.fetch();

问题是,如果我输出 settings.attributes,现在这个属性存储在一个嵌套对象中:

   settings.attributes  
   Object  
   0: Object  
       id: "3ac78cfb-ad60-1ab8-8391-f058ae9bfcfb"  
       user: "USERNAME"  
       __proto__: Object  
   __proto__: Object

问题是当我再次设置用户名以便修改时,添加了一个新属性,如下所示:

   settings.attributes  
   Object  
   0: Object  
   id: "3ac78cfb-ad60-1ab8-8391-f058ae9bfcfb"  
   user: "USERNAME"  
   __proto__: Object  
   user: "NEWUSER"  
   __proto__: Object 

如果我保存这个模型,然后再次获取它,我会在属性上获得 2 个新对象……而且它每次都在不断增长。

【问题讨论】:

标签: backbone.js local-storage


【解决方案1】:

fguillen link给出的问题的答案给出了这个问题的正确答案。

如果你想正确保存它,你只需要使用硬编码的“ID”创建模型对象。

这样做之后:

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

save() 和 fecth() 方法工作正常。显然你必须注意不要重复 2 个 ID...

【讨论】:

    猜你喜欢
    • 2012-06-22
    • 2013-02-24
    • 2017-06-07
    • 2023-03-06
    • 2017-10-09
    • 1970-01-01
    • 2012-03-30
    • 2012-05-10
    • 1970-01-01
    相关资源
    最近更新 更多