角度更新本地存储单个对象

aww*_*ter 2 local-storage angularjs

我有一些本地存储项目,它们是对象列表。

console.log(localStorageService.get("kittens"));
Run Code Online (Sandbox Code Playgroud)

将输出类似:

[
    {"name": "fluffy", "color": "white" }, 
    {"name": "luna", "color": "black" }
]
Run Code Online (Sandbox Code Playgroud)

假设我想将luna的颜色更新为棕色。

 var myKitten = localStorageService.get('kittens').filter(function(kitten){
    return kitten.name == "luna";
 })[0];

 myKitten.color = "brown";
Run Code Online (Sandbox Code Playgroud)

然后我无法弄清楚如何仅更新本地存储的单个记录。

实际上,我正在向服务器发送请求以更新记录,但是在我的应用程序中它没有得到更新。

当响应返回时,我也想更新本地存储中的记录,但是我似乎只能更新整个本地存储项(“小猫”)。我在文档中没有看到执行此操作的方法,但是我认为应该有一种方法被我忽略。

ron*_*IDX 6

Localstorage值另存为字符串。

因此,您必须像这样保存它:

var kittens = [
    {"name": "fluffy", "color": "white" }, 
    {"name": "luna", "color": "black" }
]

// Save array in local storage as string
localStorage.setItem("kittens",JSON.stringify(kittens));

// Get back item "kittens" from local storage
var kittensFromLocalStorage = JSON.parse(localStorage.getItem("kittens"));

// Change value
kittensFromLocalStorage[1].name = "jasmine";

// Save the new item with updated value
localStorage.setItem("kittens",JSON.stringify(kittensFromLocalStorage));
Run Code Online (Sandbox Code Playgroud)

或者您可以将某些支持库用作LocalForage