在我在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模块中这样做吗?
答案 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');