如何在Angular JS中的localStorage中连接对象

时间:2017-05-04 11:53:44

标签: javascript angularjs html5

我们必须将对象连接起来,将它们转换为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中实现相同的目标?

2 个答案:

答案 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而不是创建一个包含一个元素的数组),然后再次对结果数组进行字符串化