2012-02-02 37 views
0

希望這是有道理的,我使用鈦手機來構建iPhone應用程序。我有一個100個項目的數組,每個項目都有一個DishID和一個DishTitle,我在TableView中顯示DishTitle,並在事件監聽器上顯示DishId,我需要傳遞DishID並在事件監聽器上使用警報,稍後我會做一些事情物品ID,這是我到目前爲止的代碼:鈦手機從循環中的事件監聽器獲取變量

var dishes = eval(this.responseText); 

for (var i = 0; i < dishes.length; i++) 
      { 

       DishID[i] = dishes[i].DishID; 

       var row = Ti.UI.createTableViewRow(); 
        row.selectedBackgroundColor = '#fff'; 
        row.height = 30; 
        row.className = 'datarow'; 
        row.clickName = 'row'; 

       // Create the label to hold the screen name 
       name[i] = Titanium.UI.createLabel({ 
        color:'#000', 
        font:{fontSize:16,fontWeight:'bold', fontFamily:'Arial'}, 
        left:5, 
        top:2, 
        height:30, 
        width:200, 
        text:dishes[i].DishTitle 
       }); 

       name[i].addEventListener('click', function(e){ 

           alert(DishID[i]); 
          }); 

      } 

我有我不斷收到相同的ID 208不管我點擊該標籤的問題,我是不是做錯了什麼?

+0

我想知道'盤子'是如何初始化的。你是否證實他們都是不同的ID? – penguin4hire 2012-02-02 22:35:11

+0

編輯該帖子:) – 2012-02-02 22:55:29

回答

1

你有一個範圍/關閉問題。當「點擊」發生時,i = 208。我覺得最好把eventListener放在桌子上,並在該行上定製屬性:

var table = Ti.UI.createTableView(); 
var rows = []; 

for(var i = 0; i < dishes.length; i++) { 

    var row = Ti.UI.createTableViewRow({ 
     selectedBackgroundColor : '#fff', 
     height : 30, 
     className : 'datarow' 
    }); 

    row.dishId = dishes[i].DishID; 

    // Create the label to hold the screen name 
    var label = Ti.UI.createLabel({ 
     color : '#000', 
     font : { 
      fontSize : 16, 
      fontWeight : 'bold', 
      fontFamily : 'Arial' 
     }, 
     left : 5, 
     top : 2, 
     height : 30, 
     width : 200, 
     text : dishes[i].DishTitle 
    }); 

    row.add(label) 

    rows.push(row); 
} 

table.setData(rows); 

table.addEventListener('click', function(e) { 
    alert(e.row.dishId); 
}); 
+0

對不起,謝謝你:) – 2012-02-06 18:04:21