将eventlistener添加到Titanium Mobile commonJS中的窗口

时间:2012-01-28 16:54:52

标签: events mobile titanium listener commonjs

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

2 个答案:

答案 0 :(得分:1)

那真的是一个简单的问题。

我正在做Ti.App.fireEvent,但正在听window.addEventListener,这无效。

现在我正在做以下事情:

将窗口实例化的eventlistener添加到全局Ti.App - Object,并在窗口的close事件中删除此侦听器。 这非常有效。

答案 1 :(得分: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');