2

私の JsonStore は次のように定義されています。

var data_json = new Ext.data.JsonStore({
    url: '/Game/json_index',
    autoLoad: true,
    id: 'data_json',
    idProperty: 'id',
    fields: [ {name: 'id', type: 'int'}, 'name', {name:'add_date', type:'date', dateFormat: 'M$'}, 'price', 'kind', 'metacritic'],
    listeners: { 'load': function(storename, records, options){
    console.dir(this);
    }},
    writer: new Ext.data.JsonWriter()
})

受信している JSON の DUMP は次のようになります。

[
{"id":1,"name":"Guild Wars 2","add_date":"\/Date(1346104800000)\/","price":24.99,"kind":"MMO","metacritic":93},
{"id":2,"name":"Dark Souls: Prepare to Die Edition","add_date":"\/Date(1345759200000)\/","price":45.00,"kind":"actionrpg","metacritic":87},
{"id":3,"name":"Orcs Must Die! 2","add_date":"\/Date(1343599200000)\/","price":15.00,"kind":"action","metacritic":83}
]

JSON は正しくデコードされ、ストアは私のレコードでいっぱいですが、注意してください.. 恐ろしいことが起こっています!

ひどいもののスクリーンショット

すべてのレコードが phantom = true としてマークされているため、ExtJS 3.4.x の store.save() 機能を正しく使用できません。

私はこの問題についてグーグルで徹底的に検索しました.JsonReaderがレコードIDを私が渡している「id」フィールドに関連付けていないという事実に関連していると思います. idProperty: 'id' も指定しました。

これについて助けますか?レコードの作成に関する extjs のソースを読むのは本当に苦痛です。

4

1 に答える 1

5

以下を削除してみてください:

id: 'data_json'

あなたの店から。JsonStore へのすべての構成オプションは、自動的に作成される JsonReader に渡されます。これが問題の原因のようです。

于 2012-09-20T13:29:48.013 に答える