我从POST查询我的webservice中提供数据来构建动态菜单。我想要的是系统听到每个视图的点击事件,并确定它是什么。但是我不知道发生了什么,因为没有添加eventListener ......
我的代码如下:
getCategorias.onload = function() {
var json = this.responseText;
var response = JSON.parse(json);
for(var i = 0; i < response.length; i++) {
var containerAll = Ti.UI.createView({
width: "100%",
height: 130,
backgroundColor: "#000",
id: response[i].id
});
var viewImage = Ti.UI.createView({
backgroundImage: "http://www.iconomize.com.br/admin/"+response[i].foto,
backgroundColor: "#000",
opacity: "0.5",
width: "100%",
height: "100%",
top: "0"
});
var labelCat = Ti.UI.createLabel({
color: "#fff",
textAlign: "center",
width: "90%",
text: response[i].nome
});
containerAll.addEventListener('click', function(e){
alert(e.source.id);
});
containerAll.add(viewImage);
containerAll.add(labelCat);
$.listCategories.add(containerAll);
}
$.activityIndicator.hide();
};
答案 0 :(得分:2)
您可以在列表中添加eventListener,而不是在循环中添加eventListener。
System.getProperty("http.proxyHost")
您也可以设置
$.listCategories.addEventListener('click', function(e){
alert(e.source.id);
//Do the required thing by using container id
});
单击图像或标签时,确保您将收到容器视图作为e.source。
答案 1 :(得分:1)
尝试添加&#34; touchEnabled:false&#34;到图像和标签。比它工作正常(Android,Ti SDK 5.1.1)
答案 2 :(得分:1)
实际上对我有用的是在for循环之外创建这样的函数:
function handler(_obj)
{
_obj.addEventListener('click',function(e){
alert(_obj.id);
});
}
然后在你的for循环中添加以下内容:handler(containerAll);