0

我在 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 模块中这样做吗?

4

2 回答 2

1

嗯,这确实是一个简单的问题。

我正在做一个Ti.App.fireEvent,但正在听window.addEventListener,那是行不通的。

现在我正在做以下事情:

将窗口实例化时的事件监听器添加到全局Ti.App对象,并在窗口的关闭事件上删除此监听器。这完美无缺。

于 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 回答