2011-11-07 45 views
0

我正在嘗試使用Appcelerator Titanium來構建移動應用程序。這個應用程序將很大,並使其易於管理,我想使用JavaScript類。目前,我有如下定義一個JavaScript類:在Appcelerator Titanium中定義JavaScript類

function Item() 
{ 
    this.ID = 0; 

    this.initialize = function(id) { 
    this.ID = 1; 
    } 

    this.Submit = function(submitHandle) { 
    submitHandle(); 
    }; 
} 

我然後使用以下調用這個類:

alert("building Item"); 
var i = new Item(); 
alert("initializing Item"); 
i.initialize(1); 
alert("submitting"); 
i.Submit(itemSubmitted); 

function itemSubmitted() { 
    alert("tada!"); 
} 

警報消息稱「buidling項目」出現。但是,「初始化項目」永遠不會顯示。另外,我的物品從未提交過。我沒有收到錯誤。我究竟做錯了什麼?

+0

你實際上並沒有調用submitHandle。 'this.Submit = function(submitHandle){submit35} };' – Esailija

+0

這就是我的代碼的樣子。我只是沒有把它正確地輸入到問題中。感謝您指出這一點。 –

回答

0

試試這個:不要在Item類中使用this.ID = 0,只要使用ID = 0;

+0

不幸的是,這並沒有工作:( –

+0

無賴,我一直在用鈦進行一些開發,並且我有時會看到一些古怪的東西,有時候會使用這個,不管怎麼說,如果我想到其他東西,我會讓你知道的。 。 – rogerlsmith

1

我已經把這段代碼放在一個空白的app.js文件中,使用Titanium Mobile SDK 1.7.5,它在iPhone模擬器中按預期工作。在使用Android 2.1的Android模擬器上,您只能看到最後一次提醒。如果我改變了代碼,使用調試語句,我可以看到他們所有射擊:

Ti.API.info("building Item"); 
var i = new Item(); 
Ti.API.info("initializing Item"); 
i.initialize(1); 
Ti.API.info("submitting"); 
i.Submit(itemSubmitted); 

日誌輸出:

11-08 08:52:48.520: INFO/TiAPI(1319): (kroll$5: app://app.js) [295,1141] building Item 
11-08 08:52:48.530: INFO/TiAPI(1319): (kroll$5: app://app.js) [3,1144] initializing Item 
11-08 08:52:48.530: INFO/TiAPI(1319): (kroll$5: app://app.js) [2,1146] submitting 

鈦,alert功能不暫停執行上下文像JavaScript在瀏覽器。因此,第一個警報打開時,將調用第二個「警報」。您可能會在代碼中嘗試一次打開2條警報,這是Titanium Mobile在Android上無法完成的。

另一件事我會建議,使他們更容易繞過正在設置你的函數變量:

var itemSubmitted = function(){ 
    alert("tada!"); 
} 

退房出色Forging Titanium系列Kevin Whinnery's JavaScript talk from CodeStrong以獲取更多信息。

相關問題