如何在循环中添加事件侦听器 - Titanium Appcelerator

时间:2015-11-27 05:11:18

标签: javascript-events titanium titanium-mobile addeventlistener titanium-alloy

我从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();
};

3 个答案:

答案 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);