我正在使用Titanium構建iOS應用程序。我正在嘗試在tableView中顯示按字母順序排列的列表。當選擇特定行時,我想將行信息傳遞到新窗口。我的代碼按照字母順序顯示列表,並且我有一個按字母順序排列的滾動條,當選擇一個字母時,列表將移動到那個字母上。但是,選擇任何行時,它們都會發送數據庫中最後一行的信息。我認爲我需要在文本屬性的行中有一個標題元素,然後我可以有一個tableview.addEventListener抓住該標題並傳遞它,但它不起作用。這裏是我使用的代碼,如果有人可以請看一下,看看我哪裏出錯了,這將不勝感激。意外事件監聽器結果返回
var db = (function() {
var api = {};
api.all_item_names = function() {
var conn = Ti.Database.install('mydb.sqlite','clients');
var results = [];
var resultSet = conn.execute('select * from clients order by clientname asc');
while (resultSet.isValidRow()) {
results.push({
clientname: resultSet.fieldByName('clientname'),
});
resultSet.next();
}
resultSet.close();
return results;
};
return api;
}());
var tvrow;
var curheader = 'A';
var list = [];
var index = [];
var data = [];
var isAndroid = (Titanium.Platform.name == 'android');
list = (db.all_item_names());
for (var ipos=0; ipos<list.length;ipos++){
if(list[ipos].clientname[0] != curheader){
curheader = list[ipos].clientname[0];
tvrow = Titanium.UI.createTableViewRow({
height: 40,
path:'clientdetail.js' ,
client: list[ipos],
header: curheader
});
index.push({title:curheader, index:ipos});
} else {
tvrow = Titanium.UI.createTableViewRow({
height:40,
path:'clientdetail.js' ,
client: list[ipos]});
}
var title= Titanium.UI.createLabel({
left: 5,
top: 2,
height: 40,
color: '#000',
font: {fontSize: 16, fontWeight: 'bold', fontFamily: (isAndroid?'sans-serif':'Helvetica Neue')},
text: list[ipos].clientname });
tvrow.add(title);
data.push(tvrow);
}
var tableView = Titanium.UI.createTableView({
data: data,
index: index,
backgroundColor:'transparent',
separatorStyle: Titanium.UI.iPhone.TableViewStyle.GROUPED,
top: 1,
width: '99%'
});
tableView.addEventListener('click', function(e)
{
if (e.rowData.path)
{
var win = Ti.UI.createWindow({
url:e.row.path,
title:title.text
});
var clientlist = title.text;
win.clientlist = clientlist;
Ti.UI.currentTab.open(win);
}
});
win.add(tableView);
感謝您響應Travis,但現在我的標籤稱爲title是在函數內部,當我在我的tableView.addEventListener中引用它時,找不到標題變量。我試圖把tableView和Listener放入函數中,但它也不起作用。對不起,我對如何理解我需要做的事情非常感興趣。你會再次幫助我嗎? – dnevels 2013-04-08 01:39:23
@dnevels - 查看編輯 – 2013-04-08 01:52:30
良好的編輯。您能否更清楚地瞭解不需要關閉的事實,並且很快建議何時應該使用關閉以及何時不應該關閉?我擔心別人會來,讀這個答案,並認爲解決方案總是引入閉包。 – 2013-04-08 04:09:28