代码之家  ›  专栏  ›  技术社区  ›  BT101

将对象存储在本地存储器中

  •  0
  • BT101  · 技术社区  · 7 年前

    您好,在一些函数中,我得到了保存对象的代码 {}

    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 . 它工作得很好,但当我更改颜色并再次单击按钮时,我希望它保存新的 对象,而不是替换它现在的工作方式。

    所以我想节省 colors1 colors2 colors3

    2 回复  |  直到 7 年前
        1
  •  2
  •   Barmar    7 年前

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

    $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');
        });
    });
    
        2
  •  2
  •   zero298    7 年前

    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);
            });
    }