【问题标题】:Using Global Function in Titanium在 Titanium 中使用全局函数
【发布时间】:2011-05-11 06:03:48
【问题描述】:
我正在制作 Titanium 移动项目,我想在其中创建一个可以在整个应用程序中使用的全局函数。为此,我创建了其他 .JS 文件,我在其中定义了函数,并且在其中包含了需要使用此函数的 .JS 文件,并且我能够成功调用该函数。
但我的问题是:
我可以在该函数中创建新窗口吗?由于我在该窗口中添加了一个标签和一个 MapView,但它没有显示,而在功能开始时我添加了alert('FunctionCalled'),它向我显示警报但没有显示我在窗口中添加的标签。
所以任何人都可以帮助我找出我们是否可以通过函数打开窗口。如果是,那么任何示例示例,这样我就可以找出我犯了什么错误。
谢谢,
拉克什贡达利亚
【问题讨论】:
标签:
titanium
appcelerator
appcelerator-mobile
【解决方案1】:
您接近 CAN 工作,但不是最佳实践,您应该创建一个全局命名空间,将函数添加到该命名空间,然后只在 app.js 中包含该函数一次的文件
// apps.js
var myApp = {};
Ti.include('global.js','ui.js');
myApp.ui.openMainWindow();
然后我们为我们的 ui 函数创建一个单独的文件
//ui.js
(function(){
var ui = {};
ui.openMainWindow = function() {
// do open window stuff
// call global function
myApp.global.globalFunction1();
}
myApp.ui = ui;
})();
这里是我们创建全局函数的地方,我们不必在任何地方都包含该文件,因为我们将它添加到我们的全局命名空间中
//global.js
(function(){
var global = {};
global.globalFunction1 = function() {
// do super global stuff
}
myApp.global = global;
})();
这是一个如何实现它的简单概述,我在my blog上有一个complete code listing
【解决方案2】:
是的,您可以创建一个新窗口或添加标签或其他任何内容。如果您想为当前窗口添加标签,那么您可以这样做:
var helloWorld = Ti.UI.createLabel({ text: "Hello World", height: "auto", width: 200 });
Ti.UI.currentWindow.add(helloWorld);
代码在哪里执行无关紧要,因为 Ti.UI.currentWindow 将是活动窗口。