2014-01-07 31 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

相关问题