我们必须将对象连接起来,将它们转换为HTML5 localStorage中的对象数组。
我们首先检查是否已有一些数据。如果它不存在,我们只添加该项目,或者我们将另一个项目附加到现有项目以将其转换为数组。
if(type === 'server'){
var old = $window.localStorage.getItem('selectedServers');
if(old === null)
localStorage.setItem('selectedServers', JSON.stringify(item));
else
localStorage.setItem('selectedServers', JSON.stringify(old.concat(item)));
}
但是这段代码不起作用。即使JSON.stringify(old+data)
也会产生意外结果。
结果出现意外的\
。 item
这里是要添加或相加的对象。
如何在Angular JS中实现相同的目标?
答案 0 :(得分:1)
您应该在使用concat()
之前进行解析,因为您持久化了没有concat()
方法的字符串
if (type === 'server') {
var old = $window.localStorage.getItem('selectedServers');
if (old === null) {
var arr = [item]; //Create ARRAY
$window.localStorage.setItem('selectedServers', JSON.stringify(arr));
} else {
old = JSON.parse(old);
$window.localStorage.setItem('selectedServers', JSON.stringify(old.concat(item)));
}
}
答案 1 :(得分:0)
本地存储只能存储字符串,这就是您使用concat()
的原因。方法push()
不存在于字符串中,因此我猜您正在存储"字符串化的"阵列。
如果是这种情况,你必须解析字符串以获取数组,然后连接新数组o(你只需使用assertDictEqual
而不是创建一个包含一个元素的数组),然后再次对结果数组进行字符串化