我希望你将被罚款。 我有在Appcelerator的钛铝合金麻烦更新视图,
基本上,我希望能够删除选择器之前的孩子,然后添加在选择器新的一个是在不同的控制器/认为我目前在我.....
我跟了这此解决方案不幸的是不是为我工作。 下面是我想要的代码。
createEvent.js
Ti.App.addEventListener('db_update', function(){
alert("OK");
$.picker.removeAllChildren();
})
customParty.js
$.btnclick.addEventListener('click', function(){
Ti.App.fireEvent('db_update');
});
// OK alert shows up but the children of picker aren't removed.
由于显示好警报,你在好的方法和回调函数调用成功。 这里的问题是,调用removeAllChildren
方法并没有从您选择器删除行。 解决的办法是遍历colums和删除这种行:
Ti.App.addEventListener('db_update', function(){
alert("OK");
//get picker columns
var columns=$.picker.getColumns();
//Iterate over picker columns
for (var it=0,length=columns.length;i<length;it++){
//iterate over column rows
if(columns[it]){
var len = col.rowCount;
for(var index=0,collength=columns[it].length;index<collength;index++){
//remove rows[index] of columns[it]
columns[it].removeRow(columns[it].rows[index]);
}
}
}
});
顺便说Applcelerator的乡亲们说,使用全局事件(Ti.App事件)可能会导致内存管理人员的问题...
请记住,应用级事件是全球性的,这意味着它们将保留在上下文中的应用程序正在运行的(除非您删除它们)的整个时间。 这也意味着,他们引用任何对象也将保持在范围内,而你的应用程序运行。 这可以防止被垃圾收集的对象。 Appcelerator的同性恋者 。
另一种方法是使用全局函数:
在第一视图控制器(其中选择器定义):
Alloy.Globals.removeAllPickerChildren=function(){
//do what you want here
};
然后在视图 - 控制Seconde系列:
$.btnclick.addEventListener('click', function(){
if(Alloy.Globals.removeAllPickerChildren)
Alloy.Globals.removeAllPickerChildren();
});