0

ExjJs 4.2 を使用しています。異なるデータを表示する 2 つのグリッドがあります。1 つの JavaScript ファイルに、両方のグリッドを含める必要があります。私は最初のグリッドのストアをロードしています

var store = Ext.create('Ext.data.Store', {
                model: 'Writer.Person',
                autoLoad: true,
                proxy: {
                    type: 'ajax',            
                    url : 'findPatientRecordAction',
                    reader: {
                        type: 'json',
                        successProperty: 'success',
                        root: 'data',
                        messageProperty: 'message'
                    },
                    writer: {
                        type: 'json',
                        encode: true,
                        root: 'data'
                    },
                    fields: ['id','notes', 'startDate', 'endDate'],
                },
            });

JSON オブジェクト ストアは次のようになります。

"data":[{"id":35,"notes":"hiii","startDate":"2013-04-30","endDate":"2013-05-02"}]} , "詳細" :[{"id":14,"ドキュメント":"docpath12345","日付":"2013-04-28"}]

実際には、最初のグリッドには JSON の「データ」部分のみが表示され、2 番目のグリッドには JSON の「詳細」部分が表示されます。したがって、理想的には、2 番目のグリッド (現在行っていること) に対してストア オブジェクトを再度ロードするべきではありません。もう 1 つのストア タイプ変数を宣言し、「ストア」(ストアの「ドキュメント」部分) の値を再利用して、 2番目のグリッドを次のように保存します

私は今このように2番目のストアを読み込んでいます

var store2 = Ext.create('Ext.data.Store', {

                model: 'Writer.Document',
                autoLoad: true,
                proxy: {
                    type: 'ajax',            
                    url : 'findPatientRecordAction',
                    reader: {
                        type: 'json',
                        successProperty: 'success',
                        root: 'details',
                        messageProperty: 'message'
                    },
                    writer: {
                        type: 'json',
                        encode: true,
                        root: 'details'
                    },
                    fields: ['id','document', 'date'],
                },
            });`.

どちらの場合も、同じアクションを呼び出して同じ JSON を取得しています。

同じデータを2回ロードする必要がないように、別のストアオブジェクトを宣言して既存の「ストア」から値を取得する方法を教えてください。

よろしく : 開発

4

2 に答える 2

-1

私は置き換えます:

listeners: {
    load: function(store, records, successful, eOpts){
        if(successful)
        {
            store1.loadData(**store.getRange()**);
        }
    }
}

これは同じだと思います:

store.proxy.reader.rawData.data <--> store.getRange()

于 2013-05-07T15:52:41.587 に答える