如何用Javascript编写以下代码?

时间:2014-01-07 08:59:31

标签: javascript variables razor

如何用Javascript编写以下代码?我希望声明一个可以在任何页面中访问的变量。我可以在剃刀代码中声明一个变量,但我不知道如何在javascript中编写它。是否可以在javascript中声明这样的变量?

@{

 App.VariableName = "some string values";
}

2 个答案:

答案 0 :(得分: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:它不是返回一个布尔值,而是返回左手参数,如果该参数是真实的,否则返回它的右手参数。因此localStorage.myStuff || "null"将是来自本地存储的字符串,或者如果没有,则为字符串"null"

  2. 然后我们解析结果,它是我们之前存储的序列化数组或字符串"null"。虽然字符串"null"不是有效的JSON文档,但 是有效的JSON 片段,并且JSON.parse已记录为可接受片段。因此,解析的结果要么是我们先前存储的数组,要么是null

  3. 然后我们再次使用奇怪强大的||运算符来选择反序列化结果和其中包含默认值的对象({...})。因此,如果我们反序列化null,我们将选择具有默认值的对象;如果我们反序列化一个对象,我们将选择它。

答案 1 :(得分:0)

如果您的浏览器支持它,您可以使用localStorage或sessionStorage在页面之间存储变量 - 有关详细信息和兼容性表,请参阅https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage

可以这样使用:

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

关闭浏览器后,本地存储将保留数据,会话存储将仅持续该浏览器会话。