0

私はほとんどあきらめています。sencha touch 2.2.1 と sencha cmd 3.1.2.324 を使用してアプリを開発するために、ほぼ 1 か月間試みています。開発ではすべて動作しますが、プロダクション ファイル (sencha アプリ ビルド) を作成した後、selectfield が読み込まれません。

実際、私はアプリのすべてのページを分離しており、数枚のカードだけで作業しています。クロムから、Webサービスが呼び出され、期待どおりに返されることを確認できます。コンソールにはエラーは表示されませんが、selectfield は空のままです。

どんな手掛かり?

パネル:

     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"
             }
         ]
     }
4

1 に答える 1

1

これらの変更を加えて、もう一度お試しください

店内 ( MySecondApp.store.mesesHome)

storeId1)内部設定を入れる

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)

この変更は必要ありませんが、それでも変更することをお勧めします。

selectfield の store プロパティに storeId を与える

          {
             xtype:         'selectfield',
             name:          'selectMesHome',
             id:            'selectMesHome',
             action:        'selectMesHome',
             label:         'Mes', /*TODO*/
             scrollable:    true,
             displayField:  'dc_data',
             valueField:    'vl_data',
             store:         'mesesHomeStore'
          },
于 2013-09-23T06:24:24.033 に答える