mat*_*rns 5 local-storage ember.js ember-data
我定义了以下模型:
App.Post = DS.Model.extend({
title: DS.attr('string'),
comments: DS.hasMany('comment')
});
App.Comment = DS.Model.extend({
message: DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)
如果我使用Comment创建一个Post条目,那么存储在我的浏览器本地存储中的JSON会引用注释作为ID数组,它可以很好地工作:
...
"o3duh":{
"id":"o3duh",
"title":"How to write Ember",
"comments":[
"jf0a2"
]
}
...
Run Code Online (Sandbox Code Playgroud)
但是,当我添加另一个帖子时,JSON突然改变,以便嵌入评论:
...
"o3duh":{
"id":"o3duh",
"title":"How to write Ember",
"comments":[
{
"message":"First!"
}
]
},
"6kudl":{
"id":"6kudl",
"title":"Learning Ember is painful",
"comments":[
]
}
...
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我能预防吗?这引起了我的问题,因为一旦它变成这种嵌入格式,重新加载页面时LSAdapter就无法读取数据.
这是一个JSBin,所以你可以看到它发生在自己身上并看到完整的JSON等.要重现问题,只需创建一个帖子并添加注释,然后你可以刷新页面没有问题.然后添加另一篇文章并尝试刷新页面.
我不确定问题是否与ember-data或localstorage适配器有关.
我通过修改 LocalStorageAdapter 解决了这个问题,以便它只尝试以预期的格式保存 JSON。
您可以在这里查看我提交给原作者的拉取请求:https://github.com/rpflorence/ember-localstorage-adapter/pull/26
希望它能够合并到 LSAdapter 项目中,或者更好的是,有人会提出更好的解决方案;)