Titanium/ Alloy:将事件侦听器添加到 window
Titanium/ Alloy: Add event listener to a window
我在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
不过事件监听器中的函数好像没有运行.
我做错了什么?
您遗漏了一点,即自定义事件只能添加到控制器上,不能添加到视图上。
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
就我而言,我使用的是
var controller = Alloy.createController('myController');
controller.addEventListener("customEvent",function(){});
过去一个小时我一直在拍脑袋...
在@PrashantSaini 介绍的内容之上,控制器对象上没有 addEventListener,控制器具有 on
函数,所以它应该是:
controller.on("customEvent",function(){});
更新
我的回答是在控制器对象上没有 addeventlistener 这一事实。
我在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
不过事件监听器中的函数好像没有运行.
我做错了什么?
您遗漏了一点,即自定义事件只能添加到控制器上,不能添加到视图上。
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
就我而言,我使用的是
var controller = Alloy.createController('myController');
controller.addEventListener("customEvent",function(){});
过去一个小时我一直在拍脑袋...
在@PrashantSaini 介绍的内容之上,控制器对象上没有 addEventListener,控制器具有 on
函数,所以它应该是:
controller.on("customEvent",function(){});
更新
我的回答是在控制器对象上没有 addeventlistener 这一事实。