2016-02-05 55 views
0

所以我目前有以下問題。如何保存當前URL並通過按鈕點擊加載

我有一個動態圖表,我可以添加各種變量,圖形顯然會根據添加的變量而變化。當添加或刪除變量時,URL將根據這些變量自動更改,因此我可以採用該確切的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的輸入值的麻煩。以下是我保存網址的新功能。

 ` 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!"); 
      } 
     } 
    },` 

我也想顯示這樣的「清單」: <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

這很簡單,只需調用window.doYourWorkForYou(「Name」)函數,它就會正常工作 – QBM5

+0

你有沒有經過Knockout教程? http://learn.knockoutjs.com –

+0

我已經和仍然是羅伊J - 就像我說過的,我還在學習:) – Nomm

回答

1

我相信你想使用HTML5 localStorage來實現這一點。

https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

你就可以存儲你的預設到本地存儲,然後加載它們的所有用戶。

+0

我會試試這個,讓大家都知道它是怎麼回事。我想我明白 - 幾乎將URL分配給變量。存儲變量,然後在下拉菜單中,調用該URL ....我認爲 – Nomm

+0

是的,你是完全正確的。讓我知道你是否需要幫助。 –

+0

我將在明天測試我的想法,因爲發佈問題後我無法訪問我的筆記本電腦。所以我有很好的機會。 :D – Nomm

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和本地存儲here

+0

謝謝nikoss,但我已經想通了localStorage的儲蓄。但是,如果您有任何關於如何使用Knockout的數據綁定將其顯示在列表中的想法,那將會很有幫助。我仍然在玩一些東西,但是,仍然卡住了。 – Nomm

+0

@Nomm我不知道敲除im大多不使用這種庫 – nikoss