【发布时间】: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.localStorageis meant to work with Collections and it doesn't work properly with Models。 -
嗯...这很奇怪,因为在 github 的主干.localstorage 的测试文件夹中,他们展示了一个将其与模型(书)一起使用的示例...github.com/jeromegn/Backbone.localStorage/blob/master/tests/…
-
我在玩this jsFiddle,我在最后一个
console.log中看到了一个非常奇怪的行为,而不是看到属性的散列,我看到了过去保存的所有模型的属性数组。尝试多次执行代码。还有beware with loggin Objects in the JS console