我在 index.js :
中有以下代码var win = Alloy.createController('foo').getView();
win.open();
win.addEventListener('exampleEvent', function () {
Ti.API.info('Event Run!'); // does not seem to run
});
foo.js 我有以下内容:
function runEvent() {
$.trigger('exampleEvent');
$.getView().close();
}
// execute runEvent() somewhere later
但是,事件侦听器中的函数似乎没有运行。
我做错了什么?
答案 0 :(得分:4)
您遗漏的一点是,自定义事件只能添加到控制器上,而不能添加到视图上。
var win = Alloy.createController('foo').getView();
在此行中,您通过在 win 变量中使用 getView()来保持视图。
现在,它应该是这样的:
var win = Alloy.createController('foo');
win.on('exampleEvent', function () {
Ti.API.info('Event Run!'); // it will run now as you have added custom event on controller (means $ in .js file) itself.
});
// now you can get the top-most view (which is a window in this case) and can further use open() method on window
win.getView().open();
foo.js将保持不变:
function runEvent() {
$.trigger('exampleEvent');
$.getView().close();
}
// execute runEvent() somewhere later
答案 1 :(得分:0)
就我而言,我正在使用
var controller = Alloy.createController('myController');
controller.addEventListener("customEvent",function(){});
过去一小时我一直在咂嘴......
除了@PrashantSaini之外,控制器对象上没有addEventListener,控制器具有on
函数,所以它应该是:
controller.on("customEvent",function(){});
<强>更新强>
我的回答是在控制器对象上没有addeventlistener的事实。