我想知道 Ti.include 时变量作用域如何工作。
我在钛2上进行了应用。*
var x = '12'
Ti.include('lib.js');
在 lib.js 中
Ti.API.info(x) //it shows 12
但是,现在我正在将这段代码转移到合金中
在app/controllers/index.js
var x = '12'
Ti.include('/mylib/lib.js');
在应用程序/ssets/mylib/lib.js
app/ssets/mylib/lib.js // it says can't find variable x.
如何使全局变量在两个文件中都可用?
最佳答案
如果您需要分配全局变量,您可以使用Alloy.Globals
对象:
Alloy.Globals.myVar = 12;
另外,不要使用 Ti.include,最好使用 require();
并将代码转换为 CommonJS 模块,这样您就可以设置哪个变量以及您想要导出的函数:
/app/lib/util.js:
var privateValue = 'foo';
var publicValue = 'bar';
function getValues() {
return [privateValue, publicValue];
}
module.exports = {
publicValue: publicValue,
getValues: getValues,
};
/app/controllers/index.js:
var util = require('/util');
Ti.App.info(util.privateValue); // undefined
Ti.App.info(util.publicValue); // 'bar'
util.publicValue = 'foobar';
Ti.App.info(util.getValues()); // [ 'foo', 'foobar' ];
关于titanium - 钛合金可变范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21978128/