2011-05-11 65 views
0

我正在制作钛移动项目,我希望创建一个全局函数,我可以在整个应用程序中使用它。为此,我已经创建了其他.JS文件,我已经定义了该函数,并且包含了需要使用此函数的.JS文件,并且我可以成功地调用该函数。在钛中使用全局函数

但我的问题是:

我可以在该函数创建新的窗口?由于我在该窗口中添加了一个标签和一个MapView,但它没有显示,而在功能开始时,我添加了alert('FunctionCalled'),它向我显示了警报,但没有向我显示我在窗口中添加的标签。

因此,任何人都可以帮助我了解是否可以通过函数打开窗口。如果是,那么举个例子,以便我可以找出我正在犯的错误。

感谢,

拉克什Gondaliya

+0

请出示尽可能多的相关代码成为可能。 – bh88 2011-05-11 14:58:51

回答

3

你的方法可以工作,但不是最好的做法,您应该创建一个全局命名空间,功能添加到命名空间,然后只在app.js包括与函数的文件一旦

// apps.js 
var myApp = {}; 
Ti.include('global.js','ui.js'); 

myApp.ui.openMainWindow(); 

然后我们为我们的用户界面功能,一个单独的文件

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

这是它是如何实现的简单的轮廓,我有一个complete code listingmy blog

-1

是的,你可以创建一个新的窗口或添加标签或其他任何东西。如果你想添加一个标签为当前窗口,那么你会怎么做:

var helloWorld = Ti.UI.createLabel({ text: "Hello World", height: "auto", width: 200 }); 
Ti.UI.currentWindow.add(helloWorld); 

它不会身在何处的代码执行,因为Ti.UI.currentWindow将是活动窗口不管。