2014-01-07 55 views
0

以下代碼如何在Javascript中編寫?我希望聲明一個可以在任何頁面中訪問的變量。我可能會在剃刀代碼中聲明一個變量,但我不知道如何將它寫入JavaScript中。有沒有可能在JavaScript中聲明這樣的變量?以下代碼如何在Javascript中編寫?

@{ 

App.VariableName = "some string values"; 
} 
+0

你不能,而且這很容易,因爲沒有JavaScript中的狀態概念(在瀏覽器環境中) – adeneo

+0

Cookie和本地存儲浮現在腦海 – mplungjan

+0

你可以把它放在你包含在所有頁面上的腳本中。 – Peter

回答

2

我要申報其可以在任何頁面被訪問的變量。

如果你的意思是,在你的網站/應用任何頁面,您可以使用web storage:本地存儲如果值應會話,或者如果沒有會話存儲之間存在下去。

如果你只是想存儲的字符串,這是簡單的:

// Setting the string, whenever you want to remember it 
localStorage.variableName = "some string"; 

// Getting the string, probably on page load 
var theString = localStorage.variableName; 
// `theString` will be `null` if `variableName` didn't exist in storage 
// for this site 

這些僅限於字符串,所以人們通常將它們與JSON結合起來。在頁面加載:

var storedStuff = JSON.parse(localStorage.myStuff || "null") || { 
    // Default values here for when we don't have stored stuff yet 
    variableName: "some stuff" 
}; 

然後,每當你改變storedStuff.variableName(或當你想保存變更):

localStorage.myStuff = JSON.stringify(storedStuff); 

對於會話存儲,而不是,只是改變localStorage上面sessionStorage


成語

var storedStuff = JSON.parse(localStorage.myStuff || "null") || { 
    // Default values here for when we don't have stored stuff yet 
    variableName: "some stuff" 
}; 

大概可以使用一些解釋:

  1. 如果我們試圖找回的東西,不存在於局部存儲器存在,我們回去null。 JavaScript有一個curiously-powerful || operator:不是返回一個布爾值,而是返回左邊的參數,如果該參數是truthy,則返回左邊的參數,否則返回右邊的參數。所以localStorage.myStuff || "null"將是本地存儲的字符串,或者如果不存在,則字符串爲"null"

  2. 然後,我們解析結果,它可以是我們先前存儲的序列化數組,也可以是字符串"null"。儘管字符串"null"不是有效的JSON文檔,但其有效的JSON 片段和被記錄爲接受片段。所以解析的結果是我們以前存儲的數組,或者是null

  3. 然後我們再次使用功能強大的||運算符來選擇反序列化的結果和一個帶有默認值的對象({...})。因此,如果我們反序列化null,我們將選擇具有默認值的對象;如果我們反序列化一個對象,我們會選擇它。

+0

我可以知道我該怎麼做?有沒有我可以參考的示例代碼?多謝! :) 我的意思是聲明一個變量,可以在我的網站/應用程序 – user3156931

+0

thx ya!我想我必須花費一些時間來消化它:) – user3156931

+0

@ user3156931:我添加了一個簡單的字符串示例,因爲你剛纔說你想要一個字符串。我有點去了與JSON的OTT ... :-) –

0

如果你的瀏覽器支持它,你可以使用的localStorage或sessionStorage的存儲頁面之間的變量 - 請參閱https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage的詳細信息和兼容性表。

可以用作這樣:你關閉瀏覽器後

localStorage["mydata"] = myvariable; 
var dataFromStorage = localStorage["mydata"]; 

本地存儲將持續數據,會話存儲只會持續針對瀏覽器會話。

+0

我可以知道如何訪問剃刀中的localStorage? – user3156931

相關問題