如何从ExtJs中的现有商店对象获取商店对象

Deb*_*eba 0 extjs extjs4.1 extjs4.2

我正在使用ExjJs 4.2.我有两个显示不同数据的网格.在一个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'],
                },
            });
Run Code Online (Sandbox Code Playgroud)

JSON对象库如下所示:

"data":[{"id":35,"notes":"hiii","startDate":"2013-04-30","endDate":"2013-05-02"}]},"details" :[{ "ID":14, "文件": "docpath12345", "日期": "2013年4月28日"}]

实际上,第一个网格将仅显示JSON的"数据"部分,第二个网格将显示JSON的"详细信息"部分.理想情况下,我不应该为第二个网格再次加载商店对象(我现在正在做什么).我想再声明一个商店类型变量并重用'store'的值(商店的'documents'部分)成为将第二个网格存储为

我现在像这样加载第二家商店

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'],
                },
            });`.
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我调用相同的操作并获得相同的JSON.

任何人都可以帮助我,我怎么能声明另一个商店对象并从现有的"商店"获取价值,这样我就不必加载相同的数据2次.

问候:开发

Rei*_*ius 5

您可以使第一个商店将自动加载设置为false.然后在第二个商店中使用load事件将记录注入第一个使用存储活动代理数据的记录:

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'],
    },
    listeners: {
        load: function(store, records, successful, eOpts){
            if(successful)
            {
                store1.loadData(store.proxy.reader.rawData.data);
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)