2015-06-20 1 views
1

Надеюсь, с вами все будет в порядке. У меня возникли проблемы с обновлением просмотров в Titanium Appcelerator Alloy,Просмотр не обновляется с другого контроллера Аппликатор Сплав

Я в основном хочу удалять предыдущих детей из сборщика, а затем добавлять новые в подборщик, который находится в другом контроллере/представлении, в котором я сейчас ... ..

Я следил за этим THIS SOLUTION, к сожалению, это не работает для меня. Вот код, который я пытаюсь сделать.

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. 

ответ

0

Поскольку Ok оповещения показано, вы в хорошем смысле, а функция обратного вызова вызывается успешно. Проблема заключается в том, что вызов метода 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 gays.

Другой способ заключается в использовании глобальных функций:

В своем первом контроллере представления (где определен подборщика):

Alloy.Globals.removeAllPickerChildren=function(){ 
     //do what you want here 
}; 

затем в Seconde ViewController:

$.btnclick.addEventListener('click', function(){ 
    if(Alloy.Globals.removeAllPickerChildren) 
     Alloy.Globals.removeAllPickerChildren(); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^