event-handling - 不同钛对象的相同事件监听器

标签 event-handling titanium-mobile

Titanium 中是否可以为 2 个对象提供一个事件监听器? IE。我有 2 个按钮,我希望单击时执行相同的操作。

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

或者

我可以做类似的东西:

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

或者

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

最佳答案

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

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]);
}

关于event-handling - 不同钛对象的相同事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18343437/

相关文章:

titanium - 是否有用于在 Titanium 中进行调试的交互式控制台?

javascript - 使用钛的应用

python - 从绘图屏幕上单击的两点画线,然后删除艺术家

backbone.js - 在钛合金中使用 where 条件发布 feature

javascript - jQuery : Passing a method directly to the on event handler isn't working

java - 当事件发生时绘制新的图形组件(即圆圈)

javascript - Titanium Appcelerator - 以相反顺序获取 JSON

memory-management - Appcelerator Titanium View 代理内存管理

event-handling - 如何在 ExtJS 4 中以编程方式触发 keydown 事件

cocoa - Cocoa 中进程之间传递数据的最佳实践