1

次のJavaScriptが与えられます:

var fo = Ext.create('Ext.form.Panel', {
    layout:'box',
    ...
    items: [{
        xtype: 'combobox',
        valueField: 'id',
        displayField: 'organizationtype',
        store: {
            storeId: 'zaza',                
            fields: [{name: 'id'}, {name: 'organizationtype'}],
            root: 'data',
            autoLoad: true,
            proxy: {
                type: 'ajax',
                url: '/apps/crm_organizations/orgtype/',
                reader: {
                    type: 'json'
                }
            }
        },
        fieldLabel: 'Type relation',
        name: 'organizationtype',
        queryMode: 'local',
    },
            ...

このパネルには、他のフィールドの中でも、このコンボボックスが含まれています。Wiresharkを使用すると、URL'/ apps / crm_organizations /orgtype/'が実際に照会されていることがわかります。ただし、コンボボックスには値が表示されません。これは、コンボボックスの読み込みが遅れているという事実と関係がありますか?

これは、JSONリクエストに対する応答です。

{data: [ {id:"1" ,organizationtype:"Customer"} 
,{id:"2" ,organizationtype:"Relation"} 
,{id:"3" ,organizationtype:"Supplier"} 
,{id:"4" ,organizationtype:"Unknown"} ]}
4

3 に答える 3

0

使用しているjsonリーダーにルートを設定する必要があります。デフォルトは「」です。

reader: {
                    type: 'json',
                    root: 'data'
                }

また、フィールド構成をモデルオブジェクトに置き換えることを検討することもできます。(ドキュメントから)フィールド:通常、この構成オプションは避ける必要があります。下位互換性のために存在します。

于 2012-07-24T11:55:58.357 に答える
0

コンボボックスモードをローカルからリモートに変更しmode: 'remote'、jsonストアを使用します。

store: {
    xtype: 'jsonstore',
    url: '/apps/crm_organizations/orgtype/',
    autoLoad: true,
    idProperty: 'id',
    root: 'data',
    fields: ['id','organizationtype'],
},
mode: 'remote'
于 2012-07-24T12:13:19.397 に答える
0

あなたの店では、ルートプロパティがありません

store: {
  storeId: 'zaza',       
  fields: [{name: 'id'}, {name: 'organizationtype'}],
  root: 'data',
  autoLoad: true,
  proxy: {
    type: 'ajax',
    url: '/apps/crm_organizations/orgtype/',
    reader: {
      type: 'json',
      root:'data'
    }
  }
}

コンボがドメイン間のクエリ情報である場合は、jsonp構成を使用し、リモートクエリを使用してパフォーマンスを向上させます

于 2012-07-24T12:32:35.360 に答える