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

Angularjs 角度更新本地存储单个对象,angularjs,local-storage,Angularjs,Local Storage,我有一些本地存储项,它们是对象列表 console.log(localStorageService.get("kittens")); 将输出如下内容: [ {"name": "fluffy", "color": "white" }, {"name": "luna", "color": "black" } ] 假设我想将luna的颜色更新为棕色 var myKitten = localStorageService.get('kittens').filter(function

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

console.log(localStorageService.get("kittens"));
将输出如下内容:

[
    {"name": "fluffy", "color": "white" }, 
    {"name": "luna", "color": "black" }
]
假设我想将luna的颜色更新为棕色

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

 myKitten.color = "brown";
然后我不知道如何只更新本地存储的单个记录

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

当响应返回时,我也想更新本地存储中的记录,但我似乎只能更新整个本地存储项(“kittens”)。我不认为有什么方法可以做到这一点,但我觉得应该有一种方法可以做到这一点,而我却忽略了这一点。

html:


请注意,为了本实验的目的,我使用angular.copy()进行复制,从而破坏了绑定。但是,如果要删除副本并直接绑定它,则一旦get函数更新数据,视图将响应模型的更改。

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

或者您可以使用一些支持库,因为我通常使用本地存储,更新整个对象是我看到的唯一解决方法。您不能更新本地存储中的特定值。您必须更新整个对象,因为它将其存储为Key:Value对。您必须将其保存回localStorage,它本身不会发生。向我们展示您的
localStorageService
并建议使用
ngStorage
,它更强大,可以自动为您保存内容
var app = angular.module('plunker', []);

app.controller('MainCtrl', ['tempDataStorageService', function(tempDataStorageService) {

  var myCtrl = this;

    myCtrl.myCats = angular.copy(tempDataStorageService.cats);

    myCtrl.localStorage = tempDataStorageService;

    myCtrl.saveToLocalStorage = function () {
      tempDataStorageService.cats = angular.copy(myCtrl.myCats);
    }

}]);


app.factory('tempDataStorageService', function() {
    // The service object
    var storage = this;

    storage.cats = [{name: "fluffy", color: "white" }, 
                {name: "luna", color: "black" }];

    // return the service object
    return storage;
});
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));