我看过类似的线程,但没有成功。我想要做的是通过更新功能更新我的本地存储。功能如下:
使变量调用的代码:
var localProfile = JSON.parse(localStorage.getItem("profile"));
if(localProfile != undefined && localProfile.length>0)
{ this.profiles = localProfile; }
else {
this.profile = [
{ id: "1526", name: "berserk", password: "berserk", age: "31", gender: "male"},
{ id: "1358", name: "Johnathan", password: "test", age: "17", gender: "male"},
{ id: "2539", name: "Britney", password: "test", age: "18", gender: "female"},
{ id: "1486", name: "Kevin", password: "test", age: "7", gender: "male"},
{ id: "7777", name: "jesus", password: "holy", age: "unknown", gender: "male"},
{ id: "6666", name: "satan", password: "hell", age: "unknown", gender: "unknown"}
];
}
更新变量的代码:
this.updateProfile = function(profile) {
profile.updating = false;
console.log(profile);
localStorage.setItem("profile", profile);
}
正如我在标题中所提到的,我目前正在使用Angular。我使用了console.log(
- 行,响应似乎正是它应该是的。我尝试过使用JSON.parse(
和JSON.stringify
以及其他几种组合。我似乎在尝试重新加载页面时遇到上述错误或其他错误。显然,我要么无法执行该语句,要么最终破坏数据,因此重新加载页面会返回一个类似的错误。
如果变量配置文件中的数据存在疑问:
Array [ Object, Object, Object, Object, Object, Object ]
仔细观察数据时:
age:"17"
gender:"male"
id:"1358"
name:"johnathan"
password:"test"
另一个对象看起来完全相同,其中没有奇怪的默认值。我已经处理好了这个问题的$$ hashkey。
任何有关如何正确执行呼叫的帮助都是非常重要的,如果信息不足,请告诉我们。
答案 0 :(得分:2)
问题是您在保存数据时没有使用JSON.stringify。所以当你从localStorage解析时它不是json。
添加要在处理JSON.parse()
和JSON.stringify()
.factory('LocalStorageUtil', function() {
return {
get: get,
set: set,
remove: remove
}
function get(key) {
return JSON.parse(localStorage.getItem(key));
}
function set(key, val) {
localStorage.setItem(key, JSON.stringify(val));
}
function remove(key) {
return localStorage.removeItem(key);
}
})
这是一个使用此LocalStorageUtil的JS Bin微型示例应用程序。