2012-10-21 16 views
0

我想创建一个自定义的选取器,其数据来自远程JSON。问题在于,当我从选取器中选择一行时,它不会在选取器中激发“更改”事件,我必须关闭选取器并再次从选取器中选择一行,然后事件更改将工作。事件更改不会触发动态填充选取器 - 钛SDK

var clubs_data = []; 
//custom object to handle the httpClient 
new K().scoutmobile.Tools.getData(new K().scoutmobile.URL_BASE, {Accion:new K().scoutmobile.CLUBS}, function(_response){ 
    if(response.status.codigo === "RESULT"){ 
     clubs_data.push(Ti.UI.createPickerRow({title:'select a club'})); 
     for(_j in _response.data){ 
      clubs_data.push(Ti.UI.createPickerRow({color:'#fff',title: _response.data[_j].Propiedades.club_nombre.Valor, id:_response.data[_j].Propiedades.club_id.Valor})); 

     inputClubs.add(clubs_data); //where inputClubs is created previously 

    }else{        
     new K().scoutmobile.Tools.createDialog('invalid_user_alert_dialog_title','invalid_user_alert_dialog_message'); 
    } 
}); 

//event listener 
inputClubs.addEventListener('change', function(e){ 
     Ti.API.info(e.row.id); 
    }); 

win.add(inputClubs); 

在钛Studio控制台我得到这个:

[WARN][InputManagerService( 60)] Window already focused, ignoring focus gain of: [email protected] 

任何想法是怎么回事?

回答

1

我对这个三种解决方案,他们都不是足够好:

  1. 一个非常愚蠢的解决方案将在在启动空的选项有选择器指向,那么用户需要改变它反正
  2. 如果您使用该选取器值加载UI的另一个元素,则可以使用默认(或第一个)选项预加载该部分
  3. 您可以修改Titanium SDK源代码,在其中编写此日志的位置“已聚焦的窗口”并改为触发更改事件这很简单,我已经为TabGroup控件做了这些,它可能需要2个小时的时间(或者对于Android或iOS)
+0

感谢我能在应用程序论坛中找到解决方案,只需在将控件添加到窗口之前触发更改事件即可。 http://developer.appcelerator.com/question/143754/event-change-doesnt-fire-on-dynamically-populated-picker---titanium-sdk – Felix

相关问题