Javascript 动态分配事件列表传感器
在我的Tianium应用程序中,我有一个包含6个相同字段的表单,唯一不同的是它们的标题。我没有重复代码(糟糕的做法、更多的工作等),而是使用for循环动态创建每个字段,其中包含2个标签和一个视图:Javascript 动态分配事件列表传感器,javascript,events,dynamic,titanium,Javascript,Events,Dynamic,Titanium,在我的Tianium应用程序中,我有一个包含6个相同字段的表单,唯一不同的是它们的标题。我没有重复代码(糟糕的做法、更多的工作等),而是使用for循环动态创建每个字段,其中包含2个标签和一个视图: //Required info var startht = 30; var sz = 40; var width = '90%'; var labelgrp1 = new Array('Field 1', 'Field 2', 'Field 3', 'Field 4', 'Field 5', 'Fie
//Required info
var startht = 30;
var sz = 40;
var width = '90%';
var labelgrp1 = new Array('Field 1', 'Field 2', 'Field 3', 'Field 4', 'Field 5', 'Field 6');
var viewbg = '#D4D4D4';
//For the first group of labels
for(var i=0; i<labelgrp1.length; i++) {
var view = Titanium.UI.createView({
borderColor:'#000',
backgroundColor:viewbg,
touchEnabled: true,
width:width, height:40,
top: startht + i * (sz - 1)
});
var label = Ti.UI.createLabel({
color: '#303030',
font: { fontSize:16 },
shadowColor: '#aaa',
shadowOffset: {x:1, y:1},
text: labelgrp1[i],
left:10,
width: 'auto', height: 'auto'
});
var symbol = Ti.UI.createLabel({
color: '#303030',
font: { fontSize:14 },
right:10,
text: '>',
width: 'auto', height: 'auto'
});
view.add(label);
view.add(symbol);
win.add(view);
}
但是没有用。是否有一种方法可以动态创建事件监听器,或者我需要为每个字段设置一个单独的视图对象,以便它可以直接绑定到事件监听器?聚焦和模糊事件不会冒泡,因此在这种情况下,您需要监听每个单独的字段 您可以使用鼠标事件对其进行某种破解,但这不是一个很好的解决方案:没有焦点事件。如果要列出另一个事件,如
单击
,可以将事件侦听器添加到for循环中的每个视图,如下所示:
(function(v, msg){
v.addEventListener('click',function(e){
Ti.API.info("Clicked on " + msg);
});
})(view, label.txt);
如果您要添加具有
焦点
事件的侦听器,您可以用同样的方法添加侦听器。我不打算添加文本字段,但这看起来很棒。但我不能说我明白这里发生了什么。请您解释一下函数后面的(view,label.text)是什么,或者它是如何工作的?这是一个匿名、自调用(或自调用)函数。我们将view和label.text传递给它,它们被称为v和msg作为函数的参数。视图
变量随着for循环的每次迭代而改变,通过这样做,我们将视图锁定为v
,而不会被覆盖。有一些更好的解释和建议。
(function(v, msg){
v.addEventListener('click',function(e){
Ti.API.info("Clicked on " + msg);
});
})(view, label.txt);