2013-01-04 33 views
1

我想在.js文件中使用全局变量。 例如,如何在Windows8商店应用程序的Javascript/HTML5中设置全局变量

,当我读“a.js + a.html”文件的内容,并保存到某个变量“fileContent”

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

(也,当我在 “b.js + b.html” 改变 'fileContent',这应该不会影响 'fileContent' 在 “a.js + a.html”)

我应该怎么办?

谢谢。

+0

IM不确定关于Windows 8 - 但你可以使用localStorage或sessionStorage这样的东西在javascript –

回答

6

鉴于Windows 8应用程序的体系结构是单页模型,您不浏览浏览器,但仅加载HTML片段并将其插入当前文档中,这很容易。但是,我会推荐使用一些打字,而不仅仅是一个“裸”的全局变量。

文件A(globals.js):

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

在default.html中的顶部的WinJS包括后包括此。

文件B(b.js):

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

文件C(b.html,或c。JS):

// your other code 
... 
printSomethingAwesomeFromData(MyGlobals.variableA); 
+0

我有一些问题。我其实喜欢那个代码。但是,variableA的值不能在c.js中使用我的目标是创建一个WinJS.binding.list();变量,可以在b.js和c.js中共享我的代码如下: – klados

+0

[global.js]在default.html中包含“ - > WinJS.Namespace.define(”MyGlobals“,{ varA:null,}); – klados

+0

[b.js] MyGlobals.varA = new WinJS.binding.list();和MyGlobal.varA.push({title:varTitle,desc:varDesc}); – klados

0

使用localStorage。
在答:

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

谢谢你的解决方案!但有没有使用定义变量的方法?我的意思是在C.js中定义的'fileContent'变量,并在a.js和b.js中使用该变量? – klados

+0

@klados:仅当您想要在同一'.html'页面上使用变量时。否则,你将不得不依赖'localStorage'或cookies。 – Cerbrus

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

+0

'localSettings'?那是什么? – Cerbrus

+0

我忘了添加代码。现在将是正确的。期待链接获取更多信息。 –

+1

'applicationData'?我想你忘了'var applicationData = Windows.Storage.ApplicationData.current;' – Cerbrus

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