与不同钛物体相同的eventlistener

时间:2013-08-20 19:26:10

标签: event-handling titanium-mobile

Titanium中是否可以为2个对象设置一个eventListener?即我有2个按钮,我想点击相同的操作。

我应该创建:button1.addEventListenerbutton2.addEventListener吗?

我可以做类似的事情:

var array = [button1, button2];
array.addEventListener... ?

也许我可以制作像object.addEventListener('button1_clicked','button2_clicked', function() {});

这样的东西

2 个答案:

答案 0 :(得分:2)

是。您应该为每个对象创建事件侦听器。为此你应该创建一个函数,你可以用它来处理你的事件。请看下面的例子

button1.addEventListener('click', showMessage); //Adding event handlers to button1
button2.addEventListener('click', showMessage); //Adding event handlers to button2

function showMessage(event){
    alert("You have clicked " + event.source.title + " button");
    //event.source denotes the control which fired the event
}

在这里,我使用相同的功能showMessage()来处理您的点击事件。单击每个按钮,它将显示一条消息,告诉您单击的按钮。

如果您有许多用于相同目的的按钮,您可以尝试以下

var button = [];
var totalButtons = 10;//I'm assuming you have 10 buttons in your screen
for(var index=0; index<totalButtons;index++){
   button[i] = Ti.UI.createButton({
       title : 'Button ' + (index+1),
       width : 20,
       height: 50,
   });

   button[index].addEventListener('click', showMessage);
   win.add(button[index]);
}

答案 1 :(得分:1)

只需为每个对象添加相同的功能即可。例如,假设您有两个名为button1button2的按钮:

function myEventListener(e) {
    alert('Clicked button with title '+e.source.title);
}
button1.addEventListener('click', myEventListener);
button2.addEventListener('click', myEventListener);