Javascript 添加和从会话存储中检索
我正在使用Angulars$window服务进行会话存储。我需要做的是将服务承诺的成功添加到sessionStorage中,以便它可以在整个应用程序中使用 以下是我一直在尝试的:Javascript 添加和从会话存储中检索,javascript,angularjs,Javascript,Angularjs,我正在使用Angulars$window服务进行会话存储。我需要做的是将服务承诺的成功添加到sessionStorage中,以便它可以在整个应用程序中使用 以下是我一直在尝试的: $window.sessionStorage.setItem('promoImages',success); success是从服务返回的对象数组,在以下结构中: [{ promotion: {}, url: 'images/image1.png' }, {}, {}]; 因此,该结构应通过上面的行分
$window.sessionStorage.setItem('promoImages',success);
success是从服务返回的对象数组,在以下结构中:
[{
promotion: {},
url: 'images/image1.png'
},
{},
{}];
因此,该结构应通过上面的行分配给promoImages。但是,当我这样打印值时:
$log.debug('Promo from session:'+JSON.stringify($window.sessionStorage.promoImages));
我得到以下信息:
Promo from session:"[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"
如果我对成功数组和会话数组进行相同的移动,我会得到不同的结果-会话数组返回未定义的-为什么
$log.debug('Success:'+JSON.stringify(success[0].url));
// Returns url above
$log.debug('Promo from session:'+JSON.stringify($window.sessionStorage.promoImages[0].url));
// Returns undefined
关于会话存储,我做错了什么?sessionStorage只能添加到创建它的同一个文件中吗?(我不这么认为)
谢谢
编辑
感谢下面的人给出的答案-但我认为值得指出的是,在我的对象上使用stringify函数时,实际上在对象中添加了前斜杠,而不是空格…您只能将字符串存储在SessionStorage中。在调用
setItem()之前对对象进行字符串化
发件人:
Storage.setItem
参数
键名
包含要创建/更新的密钥名称的DOMString
关键值
一个DOMString,包含要为正在创建/更新的密钥指定的值
您只能在sessionStorage中存储字符串,因此在存储它之前,首先执行stringify(),然后在检索时再次将其解析为JSON
保存时:
$window.sessionStorage.setItem("JsonObj", JSON.stringify([
{url: ""},{},{}
]));
检索时:
JSON.parse($window.sessionStorage.JsonObj)[0].url
谢谢这个-这很有效-如果我能正确阅读文档会有帮助的!感谢您应该考虑使用索引XDB(我不确定是否有任何角度服务来处理它)@ Ginden可以提供一个很好的资源来阅读它吗?更多的是我自己的知识,因为上面是一个工作项目,在游戏中已经太晚了以至于不能改变它。