如何在Windows8商店应用程序中的Javascript / HTML5中设置全局变量

时间:2013-01-04 14:29:48

标签: javascript windows-8

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

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

然后我也想在“b.js + b.html”中使用'fileContent'。

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

我该怎么办?

谢谢。

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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;

您可以在此处找到更多信息:Link

答案 2 :(得分: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);
    }

答案 3 :(得分:0)

使用localStorage 在A:

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'));