我正在使用最新的Tianium Appcelerator,我的项目正在使用Alloy。
我的TableView
ID为tblResults
在我的控制器中,我用这样的行填充此表视图:
// Dummy data
var results = [];
results.push({
title: 'Hello World',
value: '123456'
});
results.push({
title: 'Bye World',
value: '654321'
});
// Build result data
var resultData = [];
for (var i = 0; i < results.length; i++) {
resultData.push(createResultRow(
results[i].title,
results[i].value
));
}
// Method to create result row
function createResultRow(myTitle, myValue) {
var tableRow = Titanium.UI.createTableViewRow({
height: 160
id: 'row-'+ myValue
});
var tableRowView = Titanium.UI.createView({
layout: 'horizontal'
});
var myButton = Titanium.UI.createButton({
title: myTitle,
btnValue: myValue
});
myButton.addEventListener('click', function(e) {
handleButtonClick(e);
});
tableRowView.add(myButton);
tableRow.add(tableRowView);
return tableRow;
}
// Set table data
$.tblResults.setData(resultData);
// Method to handle button click
function handleButtonClick(e) {
if (e.source && e.source.btnValue) {
// how to select row having a id: 'row-'+ e.source.btnValue ???
}
}
这将做的是,生成一个虚拟对象数组。然后使用它,用包含视图的行填充表视图,其中有一个按钮。
我想要实现的是,当点击按钮时,我想选择具有如下id的表格行:
'row-'+ e.source.btnValue
在纯javascript / jquery DOM风格中,我会做这样的事情:
$('#row-'+ e.source.btnValue)
如何在Titanium Appcelerator中实现这一目标?是否有某种元素选择器功能,如jQuery?
答案 0 :(得分:3)
这是我们目前不支持的常用功能,但应该支持。现在,你必须保持id的哈希 - &gt;查看参考并以这种方式查找。但是,我在此处打开了功能请求https://jira.appcelerator.org/browse/TIMOB-20286
答案 1 :(得分:0)
如果行上有select方法,可以这样做:
$.table.addEventListener('click',function(e) {
if(e.row.select) e.row.select();
//or
if(rows[e.index]) rows[e.index].select();
});
答案 2 :(得分:0)
对于表和列表视图,请始终使用表/列表中的click
和itemclick
事件。这些事件为您提供了所选行(e.row
)以及点击的实际视图(e.source
)。在所有行的按钮上都有一个监听器也更有效。
您的代码如下:
$.tblResults.addEventListener('click', handleButtonClick); // or bind in XML
// Method to handle button click
function handleButtonClick(e) {
// user tapped on button
if (e.source.btnValue) {
var row = e.row;
}
}