所以我目前遇到以下问题。
我有一个动态图表,我可以添加各种变量,图表显然会根据添加的变量而改变。添加或删除变量时,URL将根据这些变量自动更改,因此我可以获取该确切的URL并重新加载它,这将再次显示相同的选定变量。 URL不遵循设置格式,并且会按照选择的顺序将变量添加到其末尾。
我的问题我希望用户能够在文本框中输入名称,然后在“提交”中,当前网址将与用户名一起保存已指定(注意:我没有将URL保存到服务器)。然后,该名称将显示在多列表中,用户可以在其中选择一个选项,并且在选择时,应用程序将自动加载与该名称相关的特定URL。
我知道我需要(很可能)以下(伪)逻辑:
savePreset: function() {
define url variable
when user clicks 'Save' button,
Fetch current URL and specified input name
save URL
}
列出预设我会在视图中使用数据绑定来显示,然后加载预设,我不太清楚如何解决这个问题。
我正在使用Knockout.Js,老实说我很难过。我已经尝试了几种方法来做到这一点,但我无法接近我需要的东西(我很确定这是一个简单的解决方案)。
如果有人对此有任何经验或知道以前的答案,或者可以帮助我,我将非常感激。
P.S:请注意我对JS的态度并不强,我对Knockout很新,所以我还在学习。修改
我仍然无法在列表中显示它并指定相关URL的输入值。以下是我保存URL的新功能。
` setPreset: function() {
var setCurrentLocation;
if (!localStorage.setCurrentLocation) {
setCurrentLocation = [];
} else {
setCurrentLocation = JSON.parse(localStorage.setCurrentLocation);
}
var ourLocation = [document.URL];
setCurrentLocation.push(ourLocation);
try {
localStorage.setCurrentLocation = JSON.stringify(setCurrentLocation);
console.log("Preset was Saved: " + ourLocation);
return true;
}
catch (e) {
if (e == QUOTA_EXCEEDED_ERR) {
alert("Preset Quota exceeded!");
}
}
},`
我也试图像这样显示'list':
<div data-bind="foreach: setPreset">
<span style="border: 1px solid" data-bind="text: ourLocation"></span>
</div>
显然因为什么都没有储蓄,所以没有任何东西在显示。我认为,对于这个特定的位,定义为
setPreset: function () { self.setPreset.apply(self); },
var self = this;
我尝试将其指定为observableArray - 但代码不起作用。
答案 0 :(得分:1)
我相信您想使用HTML5 localStorage来实现这一目标。
https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
您可以将预设存储到localStorage,然后为用户加载所有预设。
答案 1 :(得分:1)
您只需将您的网址保存在本地存储中即可 你需要做的就是
var url=location.href;
localStorage.setItem("url",url);
function loadOldUrl(){
location.href=localStorage.getItem("url");
}
//when button clicked
document.querySelector("#myButton").addEventListener("click",loadUrl);
我认为这段代码可以帮到你 您可以阅读更多位置here和本地存储空间{{3}}