Javascript 如何在重新加载页面后保存滑块的最后状态
我用d3和angular可视化了这个网络。这是可视化的关键。 我想保存网络的最后一个状态,这样即使我刷新页面,它也会显示最后一个状态。但我不知道怎么做 我读到可以使用sessionStorage或localStorage来完成,但我似乎无法为我的可视化解决这个问题 我尝试将JSON数据设置为sessionStorage,然后获取它:Javascript 如何在重新加载页面后保存滑块的最后状态,javascript,angularjs,d3.js,Javascript,Angularjs,D3.js,我用d3和angular可视化了这个网络。这是可视化的关键。 我想保存网络的最后一个状态,这样即使我刷新页面,它也会显示最后一个状态。但我不知道怎么做 我读到可以使用sessionStorage或localStorage来完成,但我似乎无法为我的可视化解决这个问题 我尝试将JSON数据设置为sessionStorage,然后获取它: if (sessionStorage) { sessionStorage.setItem("myKey", myJSON.to
if (sessionStorage) {
sessionStorage.setItem("myKey", myJSON.toString());
}
if (sessionStorage) {
sessionStorage.getItem("myKey"); // {"myKey": "some value"}
}
我也试过这样做:
localStorage.setItem("networkGraph", networkGraph);
var networkGraph = localStorage.getItem("networkGraph");
if (sessionStorage) {
// Parse the data to a JavaScript Object
const data = JSON.parse(sessionStorage.getItem("myKey"));
} else {
// Fetch data...
// Set sessionStorage or localStorage
sessionStorage.setItem("myKey", myJSON.toString());
}
但它不起作用。这样做对吗
任何帮助都将不胜感激 我认为问题可能与您在本地存储器上存储数据的方式有关。您正在将数据保存为字符串,但我认为d3不会将字符串识别为有效的数据选项。因此,你应该这样做:
localStorage.setItem("networkGraph", networkGraph);
var networkGraph = localStorage.getItem("networkGraph");
if (sessionStorage) {
// Parse the data to a JavaScript Object
const data = JSON.parse(sessionStorage.getItem("myKey"));
} else {
// Fetch data...
// Set sessionStorage or localStorage
sessionStorage.setItem("myKey", myJSON.toString());
}
您可以根据自己的需要重新安排逻辑,但想法是最终在从存储器获取数据时应该使用JSON.parse。我认为问题可能与您在本地存储器上存储数据的方式有关。您正在将数据保存为字符串,但我认为d3不会将字符串识别为有效的数据选项。因此,你应该这样做:
localStorage.setItem("networkGraph", networkGraph);
var networkGraph = localStorage.getItem("networkGraph");
if (sessionStorage) {
// Parse the data to a JavaScript Object
const data = JSON.parse(sessionStorage.getItem("myKey"));
} else {
// Fetch data...
// Set sessionStorage or localStorage
sessionStorage.setItem("myKey", myJSON.toString());
}
您可以根据自己的需要重新安排逻辑,但想法是最终在从存储器获取数据时应该使用JSON.parse。您的尝试几乎是正确的。唯一需要更改的是本地存储的使用情况。只需添加window或$window更“有角度”的方式来访问窗口变量,如下所示:
$window.localStorage.setItem("networkGraph", JSON.stringify(networkGraph));
此外,如果您正在寻找使用本地存储的简单方法,我建议使用。它让事情变得不那么痛苦:你的尝试几乎是正确的。唯一需要更改的是本地存储的使用情况。只需添加window或$window更“有角度”的方式来访问窗口变量,如下所示:
$window.localStorage.setItem("networkGraph", JSON.stringify(networkGraph));
此外,如果您正在寻找使用本地存储的简单方法,我建议使用。它使事情变得不那么痛苦:您确定需要会话存储而不是本地存储吗?在会话存储的情况下,当应用程序的浏览器选项卡关闭时,保存的数据将被删除
您可以编写localStorage.setItem'inputLayerHeight',vm.inputLayerHeight;在onChange处理程序中,记住inputLayerHeight和Number.parseIntlocalStorage.getItem'inputLayerHeight'| | 15以还原vm.inputLayerHeight Slider对象的inputLayerHeight at value属性。同样的方法也可用于保留其他值。您确定需要会话存储而不是本地存储吗?在会话存储的情况下,当应用程序的浏览器选项卡关闭时,保存的数据将被删除
您可以编写localStorage.setItem'inputLayerHeight',vm.inputLayerHeight;在onChange处理程序中,记住inputLayerHeight和Number.parseIntlocalStorage.getItem'inputLayerHeight'| | 15以还原vm.inputLayerHeight Slider对象的inputLayerHeight at value属性。同样的方法也可以用于保留其他值。非常感谢。这很有帮助!我非常感激非常感谢你。这很有帮助!我非常感激