使用 ngStorage/localstorage 保存键=>值样式
Save key=>value style with ngStorage/localstorage
在我的 Ionic 应用程序中,我添加了插件 'ngStorage',它附带了一些演示代码:
var add = function (thing) {
$localStorage.things.push(thing);
}
这完全符合要求。我 add("foo")
它,然后 getAll()
并且值就在那里。我删除了 add()
,但保留了 getAll()
,我仍然有值 "foo"(如预期的那样)。
这对我来说不是很有用,我想用密钥访问它,所以我做了以下操作:
var addByKey = function (key, value) {
$localStorage.things[key] = value;
// Or, I've also tried:
$localStorage.things.key = value;
}
当我执行 addByKey("foo","bar")
然后执行 getAll()
时,我得到了我想要的值。当我删除 addByKey()
并重新加载时,我希望它仍然记得设置信息,但它不存在。然而,通过 add()
函数的第一次尝试仍然存在,"foo" 仍然存在(意味着数组没有重置)。
如何制作键->值类型的结构?
万一有用:
.factory ('StorageService', function ($localStorage) {
$localStorage = $localStorage.$default({
things: []
});
var _getAll = function () {
return $localStorage.things;
};
var _add = function (thing) {
$localStorage.things.push(thing);
}
var _addByKey = function (thing, value) {
$localStorage.things[key] = value;
// Or, I've also tried:
$localStorage.things.key = value;
}
return {
getAll: _getAll,
add: _add,
addByKey: _addByKey
};
})
假设你想要一个键值存储系统,你可以简单地使用一个对象而不是一个数组,这样每个键都可以设置为这个对象的属性。
.factory('StorageService', function($localStorage) {
$localStorage = $localStorage.$default({
things: {}
});
var _getAll = function() {
return $localStorage.things;
};
var _addByKey = function(thing, value) {
$localStorage.things[thing] = value;
}
return {
getAll: _getAll,
addByKey: _addByKey
};
})
但是,假设您想在主集合上保留所有值的引用并通过键访问它们,您可以考虑使用对象来存储数组的 things
intead。这样您就可以使用 属性 来存储所有项目(您也可以存储在不同的地方)并使用此对象通过引用集合中所需的值来存储您的密钥。
You may need to implement the deletion logic to maintain the consistence between the collection and the dictionary.
你的工厂看起来像这样:
.factory('StorageService', function($localStorage) {
$localStorage = $localStorage.$default({
things: {
items: []
}
});
var _getAll = function() {
return $localStorage.things.items;
};
var _add = function(thing) {
$localStorage.things.items.push(thing);
}
var _addByKey = function(thing, value) {
var i = $localStorage.things.items.push(value) - 1;
$localStorage.things[thing] = $localStorage.things.items[i];
}
return {
getAll: _getAll,
add: _add,
addByKey: _addByKey
};
})
在我的 Ionic 应用程序中,我添加了插件 'ngStorage',它附带了一些演示代码:
var add = function (thing) {
$localStorage.things.push(thing);
}
这完全符合要求。我 add("foo")
它,然后 getAll()
并且值就在那里。我删除了 add()
,但保留了 getAll()
,我仍然有值 "foo"(如预期的那样)。
这对我来说不是很有用,我想用密钥访问它,所以我做了以下操作:
var addByKey = function (key, value) {
$localStorage.things[key] = value;
// Or, I've also tried:
$localStorage.things.key = value;
}
当我执行 addByKey("foo","bar")
然后执行 getAll()
时,我得到了我想要的值。当我删除 addByKey()
并重新加载时,我希望它仍然记得设置信息,但它不存在。然而,通过 add()
函数的第一次尝试仍然存在,"foo" 仍然存在(意味着数组没有重置)。
如何制作键->值类型的结构?
万一有用:
.factory ('StorageService', function ($localStorage) {
$localStorage = $localStorage.$default({
things: []
});
var _getAll = function () {
return $localStorage.things;
};
var _add = function (thing) {
$localStorage.things.push(thing);
}
var _addByKey = function (thing, value) {
$localStorage.things[key] = value;
// Or, I've also tried:
$localStorage.things.key = value;
}
return {
getAll: _getAll,
add: _add,
addByKey: _addByKey
};
})
假设你想要一个键值存储系统,你可以简单地使用一个对象而不是一个数组,这样每个键都可以设置为这个对象的属性。
.factory('StorageService', function($localStorage) {
$localStorage = $localStorage.$default({
things: {}
});
var _getAll = function() {
return $localStorage.things;
};
var _addByKey = function(thing, value) {
$localStorage.things[thing] = value;
}
return {
getAll: _getAll,
addByKey: _addByKey
};
})
但是,假设您想在主集合上保留所有值的引用并通过键访问它们,您可以考虑使用对象来存储数组的 things
intead。这样您就可以使用 属性 来存储所有项目(您也可以存储在不同的地方)并使用此对象通过引用集合中所需的值来存储您的密钥。
You may need to implement the deletion logic to maintain the consistence between the collection and the dictionary.
你的工厂看起来像这样:
.factory('StorageService', function($localStorage) {
$localStorage = $localStorage.$default({
things: {
items: []
}
});
var _getAll = function() {
return $localStorage.things.items;
};
var _add = function(thing) {
$localStorage.things.items.push(thing);
}
var _addByKey = function(thing, value) {
var i = $localStorage.things.items.push(value) - 1;
$localStorage.things[thing] = $localStorage.things.items[i];
}
return {
getAll: _getAll,
add: _add,
addByKey: _addByKey
};
})