web-dev-qa-db-ja.com

ExtJS:Ext.data.Storeから生のJSONデータを取得するにはどうすればよいですか?

このような典型的な店から

Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'firstName', type: 'string'},
        {name: 'lastName',  type: 'string'},
        {name: 'age',       type: 'int'},
        {name: 'eyeColor',  type: 'string'}
    ]
});

var myStore = Ext.create('Ext.data.Store', {
    model: 'User',
    proxy: {
        type: 'ajax',
        url : '/users.json',
        reader: {
            type: 'json',
            root: 'users'
        }
    },
    autoLoad: true
});

MyStoreから生のJsonを取得することは可能ですか?

13
c.sokun

どうですか:

myStore.proxy.reader.rawData
17
Grant Zhu

受け入れられたソリューションは私の構成では機能しませんでした:ExtJs 4.1とメモリプロキシを備えたグリッド-グリッドにアイテムを追加した後、空に戻りました(そしてストアオブジェクトはそれを反映していました)。次のコードは、ストアのコンテンツをJSON文字列にエンコードするために機能しました。

var json = Ext.encode(Ext.pluck(store.data.items, 'data'));

乾杯!

11
Timur K

これに対する解決策を見つけるのに何年もかかりましたが、これがうまくいく解決策の1つです。

    myStore .on({ 'load': function (store, records, successful)
    {
        console.log(store.getProxy().getReader().rawData);
    } 
    });
4
Tenerezza

ストアが作成されると、プロキシリーダーrawData/jsonDataにアクセスできるようになります。アクセスするには、次のことを試してください。

store.on('load', function() {
  console.log('store.proxy.reader.jsonData');
  console.log(store.proxy.reader.jsonData);
}, this, { single: true });
1
user867768
Ext.data.Store({....
            proxy: {
                       ...
                       reader: {
                       **keepRawData: true,**
                       type: 'json',
                       rootProperty: 'root',
                       successProperty: 'success'
                       }
                    }
                }); 
0
Y.Coding

多分、あなたはこれで試すことができます:

var json = Ext.JSON.encode(myStore.getRange());

チャ!

0
mfruizs2