0

Titanium Mobile の commonJS モジュールで作成したウィンドウに eventlistener を追加する際に、確かに愚かな問題があります。

つまり、次のコードを検討してください。

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 モジュールでこれを行うことはできませんか?

4

2 に答える 2

1

うーん、それは本当に簡単な質問でした。

を実行していますTi.App.fireEventが、 を聞いていましたが、うまくいきwindow.addEventListenerませんでした。

今、私は次のことをしています:

ウィンドウのインスタンス化でイベント リスナーをグローバルTi.App-Object に追加し、ウィンドウのクローズ イベントでこのリスナーを削除します。それは完璧に機能します。

于 2012-01-29T08:35:59.783 に答える
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');
于 2012-01-29T20:37:12.990 に答える