Titanium:传递变量不起作用

时间:2013-12-01 21:13:14

标签: titanium titanium-mobile

尝试将参数传递给addevent,但它无效。

把桌子放在一起:

for (var i=0; i<json.objects[0].tour.length; i++){
    var row = Ti.UI.createTableViewRow(
            title = json.objects[0].tour[i].name,
            leftImage = json.objects[0].tour[i].icon,
            hasChild = true,
            rowIndex = json.objects[0].tour[i].id,
            height = 68,
            rowId = i
    );

    var tourdetdatattlwrvw = Ti.UI.createView({top:10, left: 10, width:'100%',height:28});

    var tourdetdatattllbl = Ti.UI.createLabel({
        text:json.objects[0].tour[i].name,
        height:23,
        width:'100%',
        font:{fontSize:20,fontWeight:'bold'},
        color:'#000',
        textAlign:'left'
    });

    tourdetdatattlwrvw.add(tourdetdatattllbl)

    var tourdetdatadescwrvw = Ti.UI.createView({left:10, width:'100%', top:40, height:60});

    var tourdetdatadesclbl = Ti.UI.createLabel({
        text:json.objects[0].tour[i].description,
        font:{fontSize:12,fontWeight:'normal'},
        color:'#000',
        width:'100%',
        height:60
    });

    tourdetdatadescwrvw.add(tourdetdatadesclbl)

    row.add(tourdetdatattlwrvw);
    row.add(tourdetdatadescwrvw);
    tableData.push(row); 
}

var table = Ti.UI.createTableView({
    data:tableData
});

然后是事件监听器:

table.addEventListener('click', function(e) {
    activeTour = e.source.rowId;
    alert(activeTour)
        alert(rowIndex)
})

当然,它不起作用。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

当您在行对象中设置任何自定义变量时,您可以通过下面的代码将其取回,所以请尝试并告诉我您是否发现任何问题。

table.addEventListener('click', function(e) {
    activeTour = e.row.rowId;
     alert(e.row.rowId);
})

答案 1 :(得分:1)

我认为代码的以下部分存在错误

var row = Ti.UI.createTableViewRow(
    title = json.objects[0].tour[i].name,
    leftImage = json.objects[0].tour[i].icon,
    hasChild = true,
    rowIndex = json.objects[0].tour[i].id,
    height = 68,
    rowId = i
);

尝试将其更改为

var row = Ti.UI.createTableViewRow({
    title : json.objects[0].tour[i].name,
    leftImage : json.objects[0].tour[i].icon,
    hasChild : true,
    rowIndex : json.objects[0].tour[i].id,
    height : 68,
    rowId : i
});

您可以将值设为

table.addEventListener('click', function(e) {
    activeTour = e.rowData.rowId;
     alert(activeTour);
});

希望它对你有所帮助。如果您有任何问题,请告诉我

答案 2 :(得分:0)

你为什么试试这个

table.addEventListener('click', function(e) {
    activeTour = e.index;
alert(e.index)
})

由于