mol*_*ira 5 javascript local-storage backbone.js
我正在使用骨干本地存储并遇到一些奇怪的行为.
我有一个定义,实例化和获取的模型和集合:
MyModel = Backbone.Model.extend({
localStorage: new LocalStore('example-myModels')
//note: LocalStore = Backbone.LocalStore -> https://github.com/jeromegn/Backbone.localStorage
});
MyCollection = Backbone.Collection.extend({
model : MyModel,
localStorage: new LocalStore('example-myModels')
});
var myCollection = new MyCollection();
myCollection.fetch(...);
Run Code Online (Sandbox Code Playgroud)
然后,此集合将作为列表显示给用户.用户可以将一个项目"添加"到集合中,最终生成此代码:
var newModel = new MyModel();
newModel.save(newModelAttributes, {
success: function(newlySavedModel) {
myCollection.add(newlySavedModel);
}
);
Run Code Online (Sandbox Code Playgroud)
此时myCollection具有新添加的模型,我可以看到在localStorage数据库中成功创建的记录:
预先保存LocalStorage:

保存后的LocalStorage:

用户添加记录后的下一步是返回列表,此时再次获取集合:
myCollection.fetch();
Run Code Online (Sandbox Code Playgroud)
现在myCollection 不再包含新记录.无论我获取多少次,都不会检索新记录 - 即使我可以在localStorage数据库中看到它.我也尝试创建一个新的Collection实例并获取它,但它产生相同的结果.如果我重新加载浏览器,新记录将按预期显示.任何人都知道发生了什么事吗?我觉得我错过了一些基本的东西......
此处提供了一个重现问题的运行示例:http: //jsbin.com/iyorax/2/edit (确保控制台可见,然后单击"使用JS运行")
提前致谢!
您的模型和集合需要共享对 LocalStore 同一实例的引用,而现在您正在创建两个不同的对象。要解决此问题,请在模型或集合之外创建 LocalStore 对象,并在模型和集合的构造函数中传入对其的引用。
| 归档时间: |
|
| 查看次数: |
1758 次 |
| 最近记录: |