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