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