1

我想在 .js 文件中使用全局变量。例如,

当我在“a.js + a.html”中读取文件内容并保存到某个变量“fileContent”中时

那么我也想在“b.js + b.html”中使用那个'fileContent'。

(另外,当我更改“b.js + b.html”中的“fileContent”时,应该会影响“a.js + a.html”中的“fileContent”)

我该怎么办?

谢谢你。

4

4 回答 4

6

鉴于 Windows 8 应用程序的体系结构是单页模型,您无需在其中导航浏览器,而只需加载 HTML 片段并将其插入当前文档,这非常容易。但是,我建议使用一些类型,而不仅仅是“裸”全局变量。

文件 A(globals.js):

WinJS.Namespace.define("MyGlobals",  {
    variableA: null,
});

在 WinJS 包含之后,将其包含在 default.html 的顶部。

文件 B (b.js):

// your other code
...
MyGlobals.variableA = getValueFromSomewhere();

文件 C(b.html 或 c.js):

// your other code
...
printSomethingAwesomeFromData(MyGlobals.variableA);
于 2013-01-04T17:08:49.303 回答
1

您还可以使用应用设置:

var applicationData = Windows.Storage.ApplicationData.current;
var localSettings = applicationData.localSettings;
var composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";

localSettings.values["exampleCompositeSetting"] = composite;

在这里您可以找到更多信息:链接

于 2013-01-04T14:49:57.893 回答
1

您可以轻松定义变量并将其用作全局变量,例如

WinJS.Namespace.define("MyGlobals", {i: 0,k:5    })

为了检查,您可以添加一个事件侦听器,例如

div1.addEventListener('click', divClickEvent);

function divClickEvent() {
        MyGlobals.i++;
        MyGlobals.k++;
        console.log("ValueOf_i____" + MyGlobals.i);
        console.log("ValueOf_k____" + MyGlobals.k);
    }
于 2013-04-23T12:16:04.910 回答
0

使用本地存储。
在一个:

localStorage.setItem('fileContent', 'value;');

在 B 中:

var fileContent = localStorage.getItem('fileContent');

或者只是访问localStorage任何其他对象:

localStorage.fileContent = "value";

但是,请记住,localStorage将所有值转换为字符串,这包括对象和数组。要设置/获取这些,您需要JSON.stringify分别使用和 JSON.parse:

localStorage.setItem('fileContent', JSON.stringify([1,2,3,4,5,6,7]));
var fileContent = JSON.parse(localStorage.getItem('fileContent'));
于 2013-01-04T14:40:57.117 回答