Добавить EventListener для окна в Titanium Mobile commonJS - PullRequest
0 голосов
/ 28 января 2012

У меня определенно глупая проблема с добавлением EventListener в окно, которое я создаю в модуле commonJS в Titanium Mobile.

Рассмотрим, например, следующий код:

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?

Ответы [ 2 ]

1 голос
/ 29 января 2012

Ну, это действительно был простой вопрос.

Я делаю Ti.App.fireEvent, но слушал window.addEventListener, это не могло сработать.

Сейчас я делаю следующее:

Добавление обработчика событий при создании экземпляра окна к глобальному Ti.App -объекту и удаление этого прослушивателя при событии закрытия окна. Это прекрасно работает.

0 голосов
/ 30 января 2012

Вы также можете определить 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');
...