2012-01-28 50 views
0

窗口添加eventlistener添加一個eventlistener我在鈦手機commonJS模塊中創建一個窗口肯定有些愚蠢的問題。添加eventlistener到鈦移動commonJS

即考慮下面的代碼:使用

var Window = require(".....").SegmentListWindow; 
var win = new Window(); 

S.ui只是一個簡單的輔助方法在我的應用程序來創建一些標準窗口是很好的產生

var SegmentListWindow = function(){ 
    var window = S.ui.createWindow("Testwindow"); 
    window.addEventListener("app:customListener", function(){ doSomething();}); 
    return window; 
} 
exports.SegmentListWindow = SegmentListWindow; 

的窗口。

但事件監聽器從來沒有被調用,我嘗試Ti.App.fireEvent("app:customListener"),但事件沒有到達監聽器。 只有當使用Ti.App.addEventListener並增加一個global eventlistener它工作。

我想也許這個問題是我沒有添加事件監聽器到窗口的"instance"?但如何解決這個問題?我不想在實例化應用程序某處的窗口時手動添加event listener。我不能在commonJS模塊中做到這一點嗎?

回答

1

嗯,那真的是一個簡單的問題。

我正在做一個Ti.App.fireEvent,但是在聽window.addEventListener,這是行不通的。

現在我做了以下內容:

添加在窗口實例的事件偵聽全球Ti.App -object,並取消對窗口的關閉事件這個監聽器。 完美的作品。

0

你也可以定義SegmentListWindow你在問題中所做的:

var SegmentListWindow = function(){ 
    var window = Ti.UI.createWindow({title:"Testwindow"}); 
    window.addEventListener("win:customListener", function(){ doSomething();}); 
    return window; 
} 
exports.SegmentListWindow = SegmentListWindow; 

,然後火win對象上的事件:

var Window = require(".....").SegmentListWindow; 
var win = new Window(); 
win.fireEvent('win:customListener');