选择字段未在构建时加载

Posted

技术标签:

【中文标题】选择字段未在构建时加载【英文标题】:selectfield not loading on build 【发布时间】:2013-09-22 23:35:17 【问题描述】:

我几乎要放弃了。我已经尝试了将近一个月来使用 sencha touch 2.2.1 和 sencha cmd 3.1.2.324 开发一个应用程序。所有工作都在开发中,但在创建生产文件(sencha app build)后,我的选择字段不加载。

实际上,我已经隔离了应用程序上的所有页面,并且只使用了几张卡片。从 chrome 我可以检查 web 服务是否被调用并按预期返回。控制台未显示任何错误,但选择字段仍为空。

有什么线索吗?

面板:

     Ext.define('MySecondApp.view.Home', 
        extend: 'Ext.Panel',
        xtype: 'mg_home',
        config:
        
           title:   'Home',
           id:      'tabHome',
           iconCls: 'info',
           layout:  'vbox',
           xtype:   'panel',
           items:
           [
              docked: 'top',xtype: 'titlebar',title: 'Home',
              
                 xtype:         'selectfield',
                 name:          'selectMesHome',
                 id:            'selectMesHome',
                 action:        'selectMesHome',
                 label:         'Mes', /*TODO*/
                 scrollable:    true,
                 displayField:  'dc_data',
                 valueField:    'vl_data',
                 store:         'mesesHome'
              ,
              
                 xtype:         'panel',
                 id:            'home_content',
                 html:          'carregando...'
              
           ]
        
     );

型号:

     Ext.define('MySecondApp.model.Meses', 
        extend: 'Ext.data.Model',
        config: 
           fields :
           [
              name:'dc_data',  type:'string',
              name:'vl_data',  type:'string'
           ]
        
     );

商店:

     Ext.define('MySecondApp.store.mesesHome', 
        extend: 'Ext.data.Store',
        storeId: 'mesesHomeStore',
        config: 
           model: 'MySecondApp.model.Meses',
           autoLoad: true,
           proxy:
           
              type: 'ajax',
              url: 'http://www.meusgastos.com.br/touch/rest/meses.php',
              reader:
              
                 type: 'json',
                 root: 'data'
              
           
        
     );

ajax 请求一些以前保存的凭据(并且经过测试和工作)。响应将是:

     
         "HEADER": [],
         "vl_atual": "201308",
         "data": [
             
                 "dc_data": "Agosto/2013",
                 "vl_data": "201308"
             ,
             
                 "dc_data": "Julho/2013",
                 "vl_data": "201307"
             ,
             
                 "dc_data": "Junho/2013",
                 "vl_data": "201306"
             ,
             
                 "dc_data": "Maio/2013",
                 "vl_data": "201305"
             ,
             
                 "dc_data": "Abril/2013",
                 "vl_data": "201304"
             ,
             
                 "dc_data": "Março/2013",
                 "vl_data": "201303"
             
         ]
     

【问题讨论】:

【参考方案1】:

进行这些更改并重试

店内 (MySecondApp.store.mesesHome)

1) 将storeId 放入配置中

2) 将阅读器root 更改为rootProperty

所以,商店看起来像这样

 Ext.define('MySecondApp.store.mesesHome', 
    extend: 'Ext.data.Store',
    config: 
       storeId: 'mesesHomeStore',
       model: 'MySecondApp.model.Meses',
       autoLoad: true,
       proxy:
       
          type: 'ajax',
          url: 'http://www.meusgastos.com.br/touch/rest/meses.php',
          reader:
          
             type: 'json',
             rootProperty: 'data'
          
       
    
 );

在视图中 (MySecondApp.view.Home)

这个改变不是必须的,但我还是建议你这样做。

将 storeId 赋予 selectfield 的存储属性

          
             xtype:         'selectfield',
             name:          'selectMesHome',
             id:            'selectMesHome',
             action:        'selectMesHome',
             label:         'Mes', /*TODO*/
             scrollable:    true,
             displayField:  'dc_data',
             valueField:    'vl_data',
             store:         'mesesHomeStore'
          ,

【讨论】:

太棒了!如此简单,我也到目前为止得到它! :) 谢谢

以上是关于选择字段未在构建时加载的主要内容,如果未能解决你的问题,请参考以下文章

选择加载功能未在 html 中显示选项

选择器更改事件未在 Titanium 中首次触发

CoffeeScript 在更改和加载时动态选择表单字段

当用户在 Xcode 中选择文本字段时,让选择器始终显示我的数组的第一个元素

RoR:加载编辑页面时根据用户选择显示/隐藏字段?

如何在页面加载时隐藏所有表单字段并在从下拉列表中选择时启用