4

私はこのようなJSONを持っています

{
"success": true,
"users": [{ 
    "name":"Boom",
    "emails": [{
        "first": "syedwaseem@yahoo.com",
        "second": "ed@sencha.com",
        "countries":[{
            "label":"pakistan",
            "continent":"asia"
            }]
        }]
}]

}

このようにモデルを作成しました

Ext.define('WR.model.WorkRecord', {
extend: 'Ext.data.Model',
fields: ['name'],      
hasMany: {model: 'WR.model.Email', name: 'emails'}


});


    Ext.define('WR.model.Email', {
        extend: 'Ext.data.Model',
        fields: ['first', 'second'],
        belongsTo: {model : 'WR.model.WorkRecord', name: 'users'},
        hasMany: {model: 'WR.model.Countries', name: 'countries'}
    });

    Ext.define('WR.model.Countries', {
        extend: 'Ext.data.Model',
        fields: ['label', 'continent'],
        belongsTo: {model: 'WR.model.Email', name: 'emails'}
    });

ここで、IDを持つフォームにデータを入力したいと思いますformJobSummary。ストアでこの関数を呼び出すことにより、ネストされていないJSONに対して正常に実行しました。

listeners: {
    load: function(users) {         
        var form = Ext.getCmp('formJobSummary'); 
        form.loadRecord(this.data.first());
    }
}

私のフォームには単純な表示フィールドがあり、このネストされたJSONを介してそれらを入力したいと思います

4

2 に答える 2

4

現在、フォームフィールド定義でname='property.subProperty'を使用することはできません:(。

したがって、これを機能させるために、ロジックを元に戻します-モデルに(冗長な)フィールド定義を追加します:

Ext.define('WR.model.WorkRecord', {
  extend: 'Ext.data.Model',
  fields: [
    'name',
    {name: 'emailFirst', mapping: 'emails.first'}
  ],      
  hasMany: {model: 'WR.model.Email', name: 'emails'}   
});

次に、次のようなフォームフィールドを作成できます。

{
  xtype: 'displayfield',
  name: 'emailFirst',
  ...
}

そして、form.loadRecord()に入力されます

于 2012-11-16T19:29:38.260 に答える
1

ストアをサブクラス化し、requires構成を追加する必要があります。

Ext.define('MyJsonStore', {
    extend: 'Ext.data.JsonStore',
    requires: [
        'WR.model.WorkRecord'
    ]
});
于 2012-10-04T23:29:48.877 に答える