2012-08-24 52 views
1

我有以下格式一些JSON數據:你可以在extJs模型中定義一個hasMany與HashMap的關係嗎?

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

如何定義我的模型,以便在地圖中的值加載正確的對象類型?那可能嗎?

下面將加載的數據,但這些值未類型爲「人」對象:

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' ] 
}); 

回答

2

的hasMany配置只適用於數組。更改數據結構,

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

會做的伎倆,但如果這不是一個選項,然後不能使用的hasMany配置。

+0

謝謝。我試圖找到一個解決方案,不涉及我改變數據結構。或者,至少我想確定extjs中的漏洞,這些漏洞會阻止您以這種方式使用數據。 – user1623730

+0

您應該仍然可以訪問像record.get('personMap')。president'這樣的記錄數據,然後將這些數據應用到您可以執行的模型中,'var model = Ext.create('Person' record.get('personMap')。president);',但是由於這不是模型的一部分,所以你會失去人物頭銜。 – sissonb

相關問題