2011-05-11 123 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將是活動窗口不管。