2012-01-28 11 views
0

私は、Titanium MobileのcommonJSモジュールで作成したウィンドウにイベントリスナーを追加するとどうにかして愚かな問題があります。Titanium Mobileのウィンドウにイベントリスナーを追加commonJS

すなわち、次のコードを検討:

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

ウィンドウがうまく

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

S.uiを使用して生成されるには、私のアプリではいくつかの標準的なウィンドウを作成するための単純なヘルパーメソッドです。

しかし、イベントリスナーは呼び出されません。私はTi.App.fireEvent("app:customListener"),を試しますが、イベントはリスナーに届きません。 Ti.App.addEventListenerを使用して、global eventlistenerを追加した場合のみ有効です。

ウィンドウの"instance"にイベントリスナーを追加していない可能性がありますか?しかし、これを修正する方法は?私はevent listenerを手動でアプリケーションのどこかでウィンドウをインスタンス化するときに追加したくありません。 commonJSモジュールでこれを行うことはできませんか?

答えて

1

これは本当に簡単な質問でした。

私はTi.App.fireEventを行っていますが、それはうまくいかなかったwindow.addEventListenerを聞いていました。グローバルTi.App -objectにウィンドウのインスタンス上のEventListenerを追加

をし、ウィンドウのクローズイベントにこのリスナーを削除します。

今、私は次のことをやっています。 これは完全に機能します。

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'); 
関連する問題