基于本地存储更新JS对象
Update JS object based on local storeage
我正试图创建一个包含所有应用程序URL的设置对象,但其中一些URL值是动态的,并存储在本地存储中。我的问题是如何根据最新的本地存储更新设置对象?
HTML:
<a href="javascript:slideonlyone('addon1')">Addon 1</a>
<a href="javascript:slideonlyone('addon2')">Addon 2</a>
<a href="javascript:slideonlyone('addon3')">Addon 3</a>
Javascript:
window.localStorage.setItem('TmpAdd','default');
var AppUrl = {
'jsonUrl1' : 'http://myurl.com/' + window.localStorage.getItem('TmpAdd'),
'jsonUrl2' : 'http://myurl.com/category/' + window.localStorage.getItem('TmpAdd')
};
function slideonlyone(item) {
window.localStorage.setItem('TmpAdd', item );
console.log(window.localStorage.getItem('TmpAdd'),AppUrl.jsonUrl1);
}
参见此处的工作示例:
http://codepen.io/anon/pen/BebvE/
无论何时更改本地存储值,都会更新URL:
var AppUrl = { };
updateURLs('default');
function updateURLs(tmpAdd) {
window.localStorage.setItem('TmpAdd', tmpAdd);
AppUrl.jsonUrl1 = 'http://myurl.com/' + tmpAdd;
AppUrl.jsonUrl1 = 'http://myurl.com/category/' + tmpAdd;
}
function slideonlyone(item) {
updateURLs(item);
console.log(window.localStorage.getItem('TmpAdd'));
console.log(AppUrl.jsonUrl1);
}
另一种方法是将jsonUrl1
和jsonUrl2
转换为查看localStorage.TmpAdd
的当前值并适当创建URL的函数。通过使用自定义属性gettersMDN,可以使函数看起来像普通属性,但这可能有些过头了。
var AppUrl = {
'jsonUrl1' : function() {
return 'http://myurl.com/' +
window.localStorage.getItem('TmpAdd');
},
'jsonUrl2' : function() {
return 'http://myurl.com/category/' +
window.localStorage.getItem('TmpAdd');
}
};
// usage: replace AppUrl.jsonUrl1 with AppUrl.jsonUrl1()
相关文章:
- 查看JS对象的所有键,甚至是getter定义的键
- 在URL中传递JS对象
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- JS对象密钥序列
- 在ajax调用中阻止来自JS对象的函数
- 属性未添加到JS对象
- 将字符串转换为JS对象
- 使用lodash查找具有truthy值的JS对象的属性
- 将toString方法暴露给nashorn中的js对象
- JSON数组转换为JS对象数组
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- 设置1400个Raphael.js对象的不透明度动画会影响动画性能
- 以非ajax方式将js对象传递给mvc操作
- JS对象->来自jquery ajax的JSON提交->php迭代
- XMLHttpRequest发送JS对象
- 使用游标循环将JS对象添加到数组中
- 动态(重新)创建iframe内容不会重置Chrome中的JS对象
- 将JS对象数组转换为嵌套形式的最有效方法
- 在知道对象值的情况下,确定数组中JS对象的索引
- JS对象文字中的方法和子方法