将对象存储在本地存储中

时间:2017-09-28 17:59:32

标签: javascript local-storage

Hello在某个函数中我已经获得了将对象{}保存到localForage的代码,这只是异步localStorage

if(vm.convertedColors[vm.convertedColors.length - 1].colorInRGB &&
   vm.convertedColors[vm.convertedColors.length - 1].colorInHSL &&
   vm.convertedColors[vm.convertedColors.length - 1].colorInHEX) {
        $localForage.setItem('colors', {
            inHSL: vm.convertedColors[vm.convertedColors.length - 1].colorInHSL,
            inHEX: vm.convertedColors[vm.convertedColors.length - 1].colorInHEX,
            inRGB: vm.convertedColors[vm.convertedColors.length - 1].colorInRGB
        }).then(function() {
            $rootScope.$emit('localForageUpdated');
        });
}

按钮点击并存储对象colors后运行。它工作得很好但是当我改变颜色并再次单击按钮时,我希望它保存新的colors对象而不是替换它现在如何工作。

所以我想保存colors1 colors2 colors3等等。它可以是对象数组。 s.o.s

2 个答案:

答案 0 :(得分:2)

将其另存为数组。然后在保存下一个之前,获取旧值,将新对象推到它上面,然后保存它。

$localForage.getItem('colors').then(function(colors) {
    colors = colors || []; // initialize as empty array on the first run
    colors.push({
        inHSL: vm.convertedColors[vm.convertedColors.length - 1].colorInHSL,
        inHEX: vm.convertedColors[vm.convertedColors.length - 1].colorInHEX,
        inRGB: vm.convertedColors[vm.convertedColors.length - 1].colorInRGB
    });
    $localForage.setItem('colors', colors).then(function() {
        $rootScope.$emit('localForageUpdated');
    });
});

答案 1 :(得分:2)

只需将颜色存储为数组,并在想要推送新颜色时推送到该数组。然后将阵列推回本地存储。

if (vm.convertedColors[vm.convertedColors.length - 1].colorInRGB &&
    vm.convertedColors[vm.convertedColors.length - 1].colorInHSL &&
    vm.convertedColors[vm.convertedColors.length - 1].colorInHEX) {

    $localForage
        .getItem("colors")
        .then((colors) => {
            colors = colors || [];
            colors.push({
                inHSL: vm.convertedColors[vm.convertedColors.length - 1].colorInHSL,
                inHEX: vm.convertedColors[vm.convertedColors.length - 1].colorInHEX,
                inRGB: vm.convertedColors[vm.convertedColors.length - 1].colorInRGB
            });
            return $localForage.setItem("colors", colors);
        })
        .then((err) => {
            if (err) {
                console.error(err);
            }
            return $localForage.getItem("colors")
        })
        .then((colors) => {
            console.log(colors);
        });
}