1

次の形式のjsonデータがあります。

{
    "id":1,
    "personMap":{
        "president":{"firstname":"Sookie","lastname":"Stackhouse"},
        "vicepresident":{"firstname":"Eric","lastname":"Northman"},
        "treasurer":{"firstname":"Alcide","lastname":"Herveaux"}
    }
}

マップ内の値が正しいオブジェクトタイプでロードされるようにモデルを定義するにはどうすればよいですか?それは可能ですか?

以下はデータをロードしますが、値は「Person」オブジェクトとして入力されません。

Ext.define('Committee', {
    extend: 'Ext.data.Model',
    fields: [ 'id', 'personMap' ]
});

以下では、personMapがマップではなく配列であると想定しています。

Ext.define('Committee', {
    extend: 'Ext.data.Model',
    fields: [ 'id' ],
    hasMany: [{
        model: 'Person',
        name: 'personMap'
    }]
});

Ext.define('Person', {
    extend: 'Ext.data.Model',
    fields: [ 'firstname', 'lastname' ]
});
4

1 に答える 1

2

hasMany 構成は配列にのみ適用されます。データ構造を次のように変更します。

{
  "id": 1,
  "personMap": [
    {
      "firstname": "Sookie",
      "lastname": "Stackhouse",
      "title": "president"
    },
    {
      "firstname": "Eric",
      "lastname": "Northman",
      "title": "vicepresident"
    },
    {
      "firstname": "Alcide",
      "lastname": "Herveaux",
      "title": "treasurer"
    }
  ]
}

トリックを行いますが、それがオプションでない場合は、hasMany 構成を使用できません。

于 2012-08-25T00:02:16.533 に答える