我在appcelerator中构建了一个显示TableView的简单视图。我还在此表上添加了EventListener,因此如果用户单击此表的行,我可以使用其他(详细信息)行扩展此表。
现在这样可行,但我无法删除此详细信息行。
这是代码:
$.table.addEventListener("click", function(e){
if(e.rowData.ignore){//empty row click
console.log("Ignored");
return;//do nothing
}
//RECUPERO LA RIGA CHE HO CLICCATO
var index = parseInt(e.index);//e callback is String, parse to int
//VERIFICO SE QUESTA RIGA HA SOTTO RIGHE
if( map[index] != null){
//SIGNIFICA CHE QUESTA RIGA HA SOTTO RIGHE
var newSubRow = Alloy.createController('familyHistory_row_children_header',{
age:L(lang+"age"),
diagnosi:L(lang+"diagnosis"),
date_start:L(lang+"start_date"),
date_end:L(lang+"end_date")
}).getView();
//CREO LA TESTATA DELLA SOTTO TABELLA
$.table.insertRowAfter(index, newSubRow);
arrayItems.forEach(function (item, i, array) {
var subItem = Alloy.createController('familyHistory_row_children',{
age:item.age,
diagnosi:item.diagnosi,
date_start:item.dateStart,
date_end:item.dateEnd
}).getView();
$.table.insertRowAfter(1+index+i, subItem);
});
}
});
familyHistory_row_children_header.js
var args = arguments[0] || {};
$.age.text = args.age;
$.diagnosi.text = args.diagnosi;
$.date_start.text = args.date_start;
$.date_end.text = args.date_end;
familyHistory_row_children.js
var args = arguments[0] || {};
$.age.text = args.age;
$.diagnosi.text = args.diagnosi;
$.date_start.text = args.date_start;
$.date_end.text = args.date_end;
我认为如果可以在 familyHistory_row_childre_header.js 中添加其他变量,那么当我插入详细信息行时,我可以设置此参数= true(例如)并在监听器中实现如果parameteri = true然后删除详细信息行。
这样做可能吗?
答案 0 :(得分:0)
我不确切地理解你想要什么,但你可以将事件作为参数传递,或者将函数和属性设置为行的顶层
index.js
$.table.hideRowChildren = function(start,end) {
//remove or hide the row
};
familyHistory_row_childre_header.js
$.row.myHeader = false;
$.row.setMyHeader = function(val) {
$.row.myHeader = val;
if(val) args.hideRowChildren(args.myFirstChildrenRow,args.myLastChildrenRow);
};
当您点击familyHistory_row_children_header时,要显示其familyHistory_row_children,您可以这样做:
$.table.addEventListener('click',function(e) {
e.row.myHeader = true;
//or
e.row.setMyHeader(true);
});